@razorwind/core 0.0.45 → 0.0.47

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.
Files changed (70) hide show
  1. package/dist/{config-25eDAKIq.d.cts → config-BjuUx31T.d.cts} +10 -3
  2. package/dist/config-BjuUx31T.d.cts.map +1 -0
  3. package/dist/{config-rgbP9zhp.d.mts → config-CEPqgKnD.d.mts} +10 -3
  4. package/dist/config-CEPqgKnD.d.mts.map +1 -0
  5. package/dist/fonts-75PPb25H.cjs +9 -0
  6. package/dist/fonts-B0ESWBBC.mjs +2 -0
  7. package/dist/fonts-B0ESWBBC.mjs.map +1 -0
  8. package/dist/fonts-CUwsBEd5.mjs +10 -0
  9. package/dist/fonts-CUwsBEd5.mjs.map +1 -0
  10. package/dist/fonts-vhz5FAsy.cjs +1 -0
  11. package/dist/index-D7VrdiAn.d.mts +100 -0
  12. package/dist/index-D7VrdiAn.d.mts.map +1 -0
  13. package/dist/index-DNAWtBG8.d.cts +100 -0
  14. package/dist/index-DNAWtBG8.d.cts.map +1 -0
  15. package/dist/{index-D6-DvdGv.d.mts → index-DXx1b3vZ.d.cts} +7 -6
  16. package/dist/{index-lcz6riNX.d.cts.map → index-DXx1b3vZ.d.cts.map} +1 -1
  17. package/dist/{index-BjSOzDOH.d.cts → index-DovYOOtL.d.cts} +1 -1
  18. package/dist/{index-lcz6riNX.d.cts → index-crrCGMN9.d.mts} +7 -6
  19. package/dist/{index-D6-DvdGv.d.mts.map → index-crrCGMN9.d.mts.map} +1 -1
  20. package/dist/{index-DM8vit-J.d.mts → index-ktFi0nZL.d.mts} +1 -1
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.d.cts +28 -7
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/index.d.mts +28 -7
  25. package/dist/index.d.mts.map +1 -1
  26. package/dist/index.mjs +1 -1
  27. package/dist/lib/fonts/index.cjs +1 -0
  28. package/dist/lib/fonts/index.d.cts +2 -0
  29. package/dist/lib/fonts/index.d.mts +2 -0
  30. package/dist/lib/fonts/index.mjs +1 -0
  31. package/dist/lib/tokens/index.cjs +1 -1
  32. package/dist/lib/tokens/index.d.cts +2 -2
  33. package/dist/lib/tokens/index.d.mts +2 -2
  34. package/dist/lib/tokens/index.mjs +1 -1
  35. package/dist/{plugin-CAoFfyMa.d.mts → plugin-BocNoTkM.d.mts} +2 -2
  36. package/dist/plugin-BocNoTkM.d.mts.map +1 -0
  37. package/dist/{plugin-m5Bm4WrK.d.cts → plugin-DMOM9PDs.d.cts} +2 -2
  38. package/dist/{plugin-m5Bm4WrK.d.cts.map → plugin-DMOM9PDs.d.cts.map} +1 -1
  39. package/dist/plugin.d.cts +2 -2
  40. package/dist/plugin.d.mts +2 -2
  41. package/dist/schema/index.cjs +1 -1
  42. package/dist/schema/index.d.cts +3 -3
  43. package/dist/schema/index.d.mts +3 -3
  44. package/dist/schema/index.mjs +1 -1
  45. package/dist/schema-Btk_-NEI.mjs +2 -0
  46. package/dist/schema-Btk_-NEI.mjs.map +1 -0
  47. package/dist/schema-Crr8KMUY.d.cts +540 -0
  48. package/dist/schema-Crr8KMUY.d.cts.map +1 -0
  49. package/dist/schema-Crr8KMUY.d.mts +540 -0
  50. package/dist/schema-Crr8KMUY.d.mts.map +1 -0
  51. package/dist/schema-D0sXEBjV.cjs +1 -0
  52. package/dist/tokens-BSuKch7x.cjs +7 -0
  53. package/dist/tokens-CsosSHvJ.mjs +8 -0
  54. package/dist/tokens-CsosSHvJ.mjs.map +1 -0
  55. package/dist/utils/index.d.cts +2 -2
  56. package/dist/utils/index.d.mts +2 -2
  57. package/package.json +16 -2
  58. package/dist/config-25eDAKIq.d.cts.map +0 -1
  59. package/dist/config-rgbP9zhp.d.mts.map +0 -1
  60. package/dist/plugin-CAoFfyMa.d.mts.map +0 -1
  61. package/dist/schema-93daQRSN.cjs +0 -1
  62. package/dist/schema-CsbyELyn.d.cts +0 -263
  63. package/dist/schema-CsbyELyn.d.cts.map +0 -1
  64. package/dist/schema-CsbyELyn.d.mts +0 -263
  65. package/dist/schema-CsbyELyn.d.mts.map +0 -1
  66. package/dist/schema-buR6a6IP.mjs +0 -2
  67. package/dist/schema-buR6a6IP.mjs.map +0 -1
  68. package/dist/tokens-CXYvywlP.mjs +0 -2
  69. package/dist/tokens-CXYvywlP.mjs.map +0 -1
  70. package/dist/tokens-DP2GoUvv.cjs +0 -1
@@ -1,4 +1,4 @@
1
- import { a as Icons, f as Components, t as Schema } from "./schema-CsbyELyn.cjs";
1
+ import { O as Components, a as Icons, m as Fonts, t as Schema } from "./schema-Crr8KMUY.cjs";
2
2
  import { PreprocessedTokens } from "style-dictionary";
3
3
  import { Tokens } from "@power-plant/dtcg-schema";
4
4
  import { EnvPaths } from "@stryke/env/get-env-paths";
@@ -113,6 +113,12 @@ interface Options {
113
113
  * @defaultValue "assets/icons"
114
114
  */
115
115
  iconsPath?: string | string[];
116
+ /**
117
+ * The path(s) to directories containing font files or font directories.
118
+ *
119
+ * @defaultValue "assets/fonts"
120
+ */
121
+ fontsPath?: string | string[];
116
122
  /**
117
123
  * Token source path(s): file, directory, Style Dictionary config, or glob.
118
124
  *
@@ -198,6 +204,7 @@ interface UserConfig extends Options {
198
204
  tokens?: Tokens | Record<string, Tokens>;
199
205
  components?: Components;
200
206
  icons?: Icons;
207
+ fonts?: Fonts;
201
208
  plugins?: Plugin[];
202
209
  }
203
210
  interface UserConfigParams {
@@ -208,7 +215,7 @@ type UserConfigFnObject = (config: UserConfig) => UserConfig;
208
215
  type UserConfigFnPromise = (params: UserConfigParams) => Promise<UserConfig | UserConfig[]>;
209
216
  type UserConfigFn = (params: UserConfigParams) => UserConfig | UserConfig[] | Promise<UserConfig | UserConfig[]>;
210
217
  type UserConfigExport = UserConfig | UserConfig[] | Promise<UserConfig | UserConfig[]> | UserConfigFnObject | UserConfigFnPromise | UserConfigFn;
211
- type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "plugins"> & {
218
+ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "fontsPath" | "plugins"> & {
212
219
  cwd: string;
213
220
  envPaths: EnvPaths & {
214
221
  home: string;
@@ -216,4 +223,4 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "plugins
216
223
  };
217
224
  //#endregion
218
225
  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 };
219
- //# sourceMappingURL=config-25eDAKIq.d.cts.map
226
+ //# sourceMappingURL=config-BjuUx31T.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BjuUx31T.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;KAC1C,mBACR,aACA,eACA,QAAQ,aAAa,gBACrB,qBACA,sBACA;KAEQ,SAAS,aACnB;EAGA;EACA,UAAU;IACR"}
@@ -1,4 +1,4 @@
1
- import { a as Icons, f as Components, t as Schema } from "./schema-CsbyELyn.mjs";
1
+ import { O as Components, a as Icons, m as Fonts, t as Schema } from "./schema-Crr8KMUY.mjs";
2
2
  import { GeneratedDocument } from "@power-plant/core";
3
3
  import { EnvPaths } from "@stryke/env/get-env-paths";
4
4
  import { PreprocessedTokens } from "style-dictionary";
@@ -113,6 +113,12 @@ interface Options {
113
113
  * @defaultValue "assets/icons"
114
114
  */
115
115
  iconsPath?: string | string[];
116
+ /**
117
+ * The path(s) to directories containing font files or font directories.
118
+ *
119
+ * @defaultValue "assets/fonts"
120
+ */
121
+ fontsPath?: string | string[];
116
122
  /**
117
123
  * Token source path(s): file, directory, Style Dictionary config, or glob.
118
124
  *
@@ -198,6 +204,7 @@ interface UserConfig extends Options {
198
204
  tokens?: Tokens | Record<string, Tokens>;
199
205
  components?: Components;
200
206
  icons?: Icons;
207
+ fonts?: Fonts;
201
208
  plugins?: Plugin[];
202
209
  }
203
210
  interface UserConfigParams {
@@ -208,7 +215,7 @@ type UserConfigFnObject = (config: UserConfig) => UserConfig;
208
215
  type UserConfigFnPromise = (params: UserConfigParams) => Promise<UserConfig | UserConfig[]>;
209
216
  type UserConfigFn = (params: UserConfigParams) => UserConfig | UserConfig[] | Promise<UserConfig | UserConfig[]>;
210
217
  type UserConfigExport = UserConfig | UserConfig[] | Promise<UserConfig | UserConfig[]> | UserConfigFnObject | UserConfigFnPromise | UserConfigFn;
211
- type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "plugins"> & {
218
+ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "fontsPath" | "plugins"> & {
212
219
  cwd: string;
213
220
  envPaths: EnvPaths & {
214
221
  home: string;
@@ -216,4 +223,4 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "plugins
216
223
  };
217
224
  //#endregion
218
225
  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 };
219
- //# sourceMappingURL=config-rgbP9zhp.d.mts.map
226
+ //# sourceMappingURL=config-CEPqgKnD.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-CEPqgKnD.d.mts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts"],"mappings":""}
@@ -0,0 +1,9 @@
1
+ const e=require("./fonts-vhz5FAsy.cjs");let t=require("defu"),n=require("@stryke/fs/exists"),r=require("@stryke/fs/is-file"),i=require("@stryke/fs/json"),a=require("@stryke/path/append"),o=require("@stryke/path/file-path-fns"),s=require("@stryke/path/join"),c=require("@stryke/string-format/title-case"),l=require("@stryke/type-checks/is-set-object"),u=require("@stryke/type-checks/is-set-string"),d=require("node:fs/promises"),f=require("node:path");const p=new Set([`woff2`,`woff`,`ttf`,`otf`,`otc`,`svg`]),m={woff2:`woff2`,woff:`woff`,ttf:`truetype`,otf:`opentype`,otc:`opentype`,svg:`svg`},h={thin:100,hairline:100,extralight:200,ultralight:200,light:300,regular:400,normal:400,book:400,roman:400,medium:500,semibold:600,demibold:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900},g={sans:`sans-serif`,serif:`serif`,mono:`monospace`,display:`sans-serif`,heading:`sans-serif`,body:`sans-serif`,code:`monospace`},_=[`sans`,`body`,`heading`,`display`],v=[`mono`,`code`];async function ee(e,t){if(!e)return[];let r=[];for(let i of Object.values(e))if(i.source===`local`){await(0,d.mkdir)(t,{recursive:!0});for(let e of i.files){if(!e.path||!(0,n.existsSync)(e.path))continue;let i=(0,f.join)(t,(0,f.basename)(e.path));await(0,d.copyFile)(e.path,i),r.push(i)}}return r}function y(e){let t=e.trim();return!t||/^[a-z-]+$/i.test(t)&&!/\s/.test(t)?t:`"${t.replaceAll(`"`,`\\"`)}"`}function b(e){return e.family?.trim()||e.title?.trim()||e.name}function x(e){let t=[y(b(e))];for(let n of e.fallbacks??[]){let e=y(n);e&&!t.includes(e)&&t.push(e)}if(e.role){let n=g[e.role];n&&!t.includes(n)&&t.push(n)}return t.filter(Boolean).join(`, `)}function S(e){let t=b(e).replaceAll(` `,`+`),n=e.display??`swap`,r=(e.weights??[]).map(String),i=(e.styles??[`normal`]).includes(`italic`),a=t;if(e.variable){let e=r.length===2?`${r[0]}..${r[1]}`:`100..900`;a=i?`${t}:ital,wght@0,${e};1,${e}`:`${t}:wght@${e}`}else if(r.length>0){if(i){let e=[];for(let t of r)e.push(`0,${t}`);for(let t of r)e.push(`1,${t}`);a=`${t}:ital,wght@${e.join(`;`)}`}else a=`${t}:wght@${r.join(`;`)}`}return`https://fonts.googleapis.com/css2?family=${a}&display=${n}`}function C(e){return e.format}function w(e,t){let n=(0,f.basename)(e.path),r=`${t.endsWith(`/`)?t:`${t}/`}${n}`,i=C(e);return i?`url("${r}") format("${i}")`:`url("${r}")`}function T(e,t){let n=b(e),r=e.display??`swap`;return e.files.map(e=>{let i=[`@font-face {`,` font-family: ${y(n)};`,` src: ${w(e,t)};`];return e.weight!==void 0&&i.push(` font-weight: ${e.weight};`),e.style&&i.push(` font-style: ${e.style};`),e.unicodeRange&&i.push(` unicode-range: ${e.unicodeRange};`),i.push(` font-display: ${r};`,`}`),i.join(`
2
+ `)}).join(`
3
+
4
+ `)}function E(e){return Object.values(e).filter(e=>e.source===`google`).map(e=>`@import url("${S(e)}");`).join(`
5
+ `)}function D(e,t={}){let n=t.urlPrefix??`./fonts/`;return Object.values(e).filter(e=>e.source===`local`).map(e=>T(e,n)).join(`
6
+
7
+ `)}function O(e,t={}){return[E(e),D(e,t)].filter(Boolean).join(`
8
+
9
+ `)}function te(e,t,n={}){if(!t||Object.keys(t).length===0)return e;let r=O(t,n);return r?e?`${r}\n\n${e}`:`${r}\n`:e}const k=(0,t.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ne(e,t){return(0,f.isAbsolute)(t)?t:(0,f.resolve)(e,t)}function A(e){return Array.isArray(e)?e.filter(u.isSetString):(0,u.isSetString)(e)?[e]:[]}function j(e){let t=(0,o.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&p.has(t))}function M(e){let t=(0,o.findFileExtensionSafe)(e)?.toLowerCase();return t?m[t]:void 0}async function N(e){try{return(await(0,d.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&j(e.name)).map(e=>e.name)}catch{return[]}}const P=Object.keys(h).sort((e,t)=>t.length-e.length);function F(e){let t=M(e),n=(0,o.findFileName)(e,{withExtension:!1})??e,r,i=/(?:[-_ ](italic|oblique|it)|Italic|Oblique)$/.exec(n);i&&(r=(i[1]??i[0]).toLowerCase()===`oblique`?`oblique`:`italic`,n=n.slice(0,i.index));let a,s=/[-_ ]([^_-]+)$/.exec(n),c=(s?.[1]??n).toLowerCase().replaceAll(/[\s_]/g,``);for(let e of P)if(c===e||c.endsWith(e)){if(a=h[e],s)n=n.slice(0,s.index);else{let t=n.toLowerCase().lastIndexOf(e);n=t>0?n.slice(0,t):n}break}return{family:n.replaceAll(/[-_]+$/g,``).trim()||n,...a===void 0?{}:{weight:a},...r?{style:r}:{},...t?{format:t}:{}}}function I(e){return e.trim().toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-+|-+$/g,``)}function L(t){if(!t)return;let n=e.r.safeParse(t);if(n.success)return[n.data];if(!Array.isArray(t))return;let r=[];for(let n of t){let t=e.r.safeParse(n);t.success&&r.push(t.data)}return r.length>0?r:void 0}function R(e,t){if(e.source===`google`||e.source===`local`)return e.source;if(t&&t.length>0)return`local`;if(`weights`in e||`subsets`in e||`variable`in e||`styles`in e||(0,u.isSetString)(e.family)&&!t)return`google`}function z(t){if(!(0,l.isSetObject)(t))return;let n=`files`in t?L(t.files):void 0,r=R(t,n);if(!r){let n=e.a.safeParse(t);return n.success?n.data:void 0}let i={...t,source:r,...n?{files:n}:{}},a=r===`google`?e.s.partial().safeParse({...i,source:`google`}):e.c.partial().safeParse({...i,source:`local`});if(a.success)return Object.keys(a.data).length>0?a.data:void 0}function B(e){return(0,l.isSetObject)(e)&&`path`in e}async function V(e){let t=(0,s.joinPaths)(e,`package.json`);if(!(0,n.existsSync)(t))return;let r;try{r=await(0,i.readJsonFile)(t)}catch{return}let a={};if((0,u.isSetString)(r.name)&&(a.name=r.name,a.title=r.name),(0,u.isSetString)(r.description)&&(a.description=r.description),Array.isArray(r.keywords)){let e=r.keywords.filter(u.isSetString);e.length>0&&(a.tags=e)}let o=r.razorwind,c;if(B(o)||Array.isArray(o)){let e=L(o);e&&(c={source:`local`,files:e})}else(0,l.isSetObject)(o)&&(c=z(o));let d=k(c??{},a);return Object.keys(d).length>0?d:void 0}async function H(e){let t=(0,s.joinPaths)(e,`font.json`);if(!(0,n.existsSync)(t))return;let r;try{r=await(0,i.readJsonFile)(t)}catch{return}if(B(r)||Array.isArray(r)){let e=L(r);if(e)return{source:`local`,files:e}}return z(r)}function U(e,t,n){return t?.length?t.map(t=>{let n=(0,a.appendPath)(t.path,e);return{...t,path:n,format:t.format??M(t.path)}}):n.map(t=>{let n=F(t);return{path:(0,a.appendPath)(t,e),format:n.format,...n.weight===void 0?{}:{weight:n.weight},...n.style?{style:n.style}:{}}})}async function W(t){let n=await V(t),r=await H(t),i=await N(t);if(!n&&!r&&i.length===0)return;let a=k(r??{},n??{}),s=(0,o.findFolderName)(t),l=(0,u.isSetString)(a.name)?a.name:s,d=(0,u.isSetString)(a.title)?a.title:(0,c.titleCase)(l),f=U(t,a.source===`local`?a.files:void 0,i),p=(a.source??(f.length>0?`local`:`google`))===`google`?{...a,source:`google`,name:l,title:d,family:a.family??d}:{...a,source:`local`,name:l,title:d,family:a.family??d,files:f.length>0?f:a.source===`local`?a.files:f},m=e.a.safeParse(p);return m.success?m.data:void 0}function G(e,t,n){let r=I(t)||`font`,i=e[r];if(i?.source===`local`){let t=[...i.files],a=t.findIndex(e=>e.path===n.path);a>=0?t[a]=n:t.push(n),e[r]={...i,files:t};return}i||(e[r]={source:`local`,name:r,title:(0,c.titleCase)(t),family:t,files:[n]})}async function re(e){let t={},i=A(e.options.fontsPath);for(let a of i){let i=ne(e.cwd,a);if(!(!(0,n.existsSync)(i)||!(0,r.isDirectory)(i)))try{let e=await(0,d.readdir)(i,{withFileTypes:!0});for(let n of e){if(n.name.startsWith(`.`))continue;let e=(0,s.joinPaths)(i,n.name);if(n.isDirectory()){let n=await W(e);if(n){let e=t[n.name];t[n.name]=e?k(n,e):n}continue}if(n.isFile()&&j(n.name)){let r=F(n.name);G(t,r.family,{path:e,format:r.format,...r.weight===void 0?{}:{weight:r.weight},...r.style?{style:r.style}:{}})}}}catch{continue}}return t}const K=/@font-face\s*\{([^{}]*)\}/gi,q=/@import\s+(?:url\()?['"]?(https:\/\/fonts\.googleapis\.com\/css2?\?[^)'"\s]+)['"]?\)?\s*;/gi,J=/url\(\s*['"]?(https:\/\/fonts\.googleapis\.com\/css2?\?[^)'"\s]+)['"]?\s*\)/gi,Y=/font-family\s*:\s*([^;]+);/i,X=/font-weight\s*:\s*([^;]+);/i,ie=/font-style\s*:\s*(normal|italic|oblique)/i,ae=/font-display\s*:\s*(auto|block|swap|fallback|optional)/i,oe=/unicode-range\s*:\s*([^;]+);/i,se=/url\(\s*['"]?([^)'"]+)['"]?\s*\)(?:\s*format\(\s*['"]?([\w-]+)['"]?\s*\))?/i;function Z(e){return e.trim().toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-+|-+$/g,``)}function Q(e){return e.trim().replaceAll(/^['"]|['"]$/g,``).trim()}function $(e){if(!e)return;let t=e.trim(),n=Number.parseInt(t,10);return Number.isNaN(n)?t||void 0:n}function ce(e,t){if(e){let t=e.toLowerCase();if(t===`woff2`||t===`woff`||t===`truetype`||t===`opentype`||t===`svg`)return t}let n=t.split(`.`).pop()?.split(`?`)[0]?.toLowerCase();return n?m[n]:void 0}function le(e,t,n,r){let i=Z(t)||`font`,a=e[i];if(a?.source===`local`){let t=[...a.files],r=t.findIndex(e=>e.path===n.path);r>=0?t[r]=n:t.push(n),e[i]={...a,files:t};return}a||(e[i]={source:`local`,name:i,title:(0,c.titleCase)(t),family:t,...r?{display:r}:{},files:[n]})}function ue(e){let t;try{t=new URL(e)}catch{return[]}let n=t.searchParams.get(`display`),r=n===`auto`||n===`block`||n===`swap`||n===`fallback`||n===`optional`?n:void 0,i=t.searchParams.getAll(`family`),a=[];for(let e of i){let[t,n]=e.split(`:`),i=(t??``).replaceAll(`+`,` `).trim();if(!i)continue;let o=Z(i),s=[],l=new Set,u=!1;if(n){let[e,t]=n.split(`@`),r=(e??``).split(`,`),i=r.indexOf(`ital`),a=r.indexOf(`wght`),o=(t??``).split(`;`).filter(Boolean);for(let e of o){let t=e.split(`,`);i>=0&&t[i]===`1`?l.add(`italic`):l.add(`normal`);let n=a>=0?t[a]:t[0];if(n?.includes(`..`)){u=!0;let[e,t]=n.split(`..`);e&&s.push(e),t&&s.push(t)}else{let e=$(n);e!==void 0&&!s.includes(e)&&s.push(e)}}}a.push({source:`google`,name:o||`font`,title:(0,c.titleCase)(i),family:i,...r?{display:r}:{},...s.length>0?{weights:s}:{},...l.size>0?{styles:[...l]}:{},...u?{variable:!0}:{}})}return a}function de(e){let t=new Set;for(let n of e.matchAll(q))n[1]&&t.add(n[1]);for(let n of e.matchAll(J))n[1]&&t.add(n[1]);return[...t]}function fe(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,``),n={};for(let e of de(t))for(let t of ue(e))n[t.name]??=t;for(let e of t.matchAll(K)){let t=e[1]??``,r=Q(Y.exec(t)?.[1]??``);if(!r)continue;let i=se.exec(t),a=i?.[1];if(!a||a.includes(`fonts.googleapis.com`))continue;let o={path:a,format:ce(i?.[2],a),weight:$(X.exec(t)?.[1]),style:ie.exec(t)?.[1],unicodeRange:oe.exec(t)?.[1]?.trim()},s=ae.exec(t)?.[1];le(n,r,o,s)}return n}function pe(e){return!e||Object.keys(e).length===0}function me(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]??=r;return n}function he(e,t){if(!e)return;let n=Array.isArray(t)?t:[t];for(let t of n){let n=Object.values(e).find(e=>e.role===t);if(n)return n}}Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return _}});
@@ -0,0 +1,2 @@
1
+ import{z as e}from"zod";const t=e.enum([`sans`,`serif`,`mono`,`display`,`heading`,`body`,`code`]),n=e.enum([`auto`,`block`,`swap`,`fallback`,`optional`]),r=e.enum([`woff2`,`woff`,`truetype`,`opentype`,`svg`]),i=e.object({path:e.string(),format:r.optional(),weight:e.union([e.number(),e.string()]).optional(),style:e.enum([`normal`,`italic`,`oblique`]).optional(),unicodeRange:e.string().optional()}),a=e.object({name:e.string(),title:e.string(),family:e.string().optional().describe(`CSS font-family name. Defaults to title or name.`),role:t.optional(),fallbacks:e.array(e.string()).optional(),display:n.optional(),category:e.string().optional(),description:e.string().optional(),tags:e.array(e.string()).optional()}),o=a.extend({source:e.literal(`google`),weights:e.array(e.union([e.number(),e.string()])).optional(),styles:e.array(e.enum([`normal`,`italic`])).optional(),subsets:e.array(e.string()).optional(),variable:e.boolean().optional()}),s=a.extend({source:e.literal(`local`),files:e.array(i).min(1)}),c=e.discriminatedUnion(`source`,[o,s]),l=e.record(e.string(),c);export{c as a,s as c,t as i,r as n,l as o,i as r,o as s,n as t};
2
+ //# sourceMappingURL=fonts-B0ESWBBC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts-B0ESWBBC.mjs","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import{a as e,c as t,r as n,s as r}from"./fonts-B0ESWBBC.mjs";import{createDefu as i}from"defu";import{existsSync as a}from"@stryke/fs/exists";import{isDirectory as o}from"@stryke/fs/is-file";import{readJsonFile as s}from"@stryke/fs/json";import{appendPath as c}from"@stryke/path/append";import{findFileExtensionSafe as l,findFileName as u,findFolderName as ee}from"@stryke/path/file-path-fns";import{joinPaths as d}from"@stryke/path/join";import{titleCase as f}from"@stryke/string-format/title-case";import{isSetObject as p}from"@stryke/type-checks/is-set-object";import{isSetString as m}from"@stryke/type-checks/is-set-string";import{copyFile as h,mkdir as g,readdir as _}from"node:fs/promises";import{basename as v,isAbsolute as y,join as b,resolve as x}from"node:path";const S=new Set([`woff2`,`woff`,`ttf`,`otf`,`otc`,`svg`]),C={woff2:`woff2`,woff:`woff`,ttf:`truetype`,otf:`opentype`,otc:`opentype`,svg:`svg`},w={thin:100,hairline:100,extralight:200,ultralight:200,light:300,regular:400,normal:400,book:400,roman:400,medium:500,semibold:600,demibold:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900},T={sans:`sans-serif`,serif:`serif`,mono:`monospace`,display:`sans-serif`,heading:`sans-serif`,body:`sans-serif`,code:`monospace`},E=[`sans`,`body`,`heading`,`display`],D=[`mono`,`code`];async function O(e,t){if(!e)return[];let n=[];for(let r of Object.values(e))if(r.source===`local`){await g(t,{recursive:!0});for(let e of r.files){if(!e.path||!a(e.path))continue;let r=b(t,v(e.path));await h(e.path,r),n.push(r)}}return n}function k(e){let t=e.trim();return!t||/^[a-z-]+$/i.test(t)&&!/\s/.test(t)?t:`"${t.replaceAll(`"`,`\\"`)}"`}function A(e){return e.family?.trim()||e.title?.trim()||e.name}function j(e){let t=[k(A(e))];for(let n of e.fallbacks??[]){let e=k(n);e&&!t.includes(e)&&t.push(e)}if(e.role){let n=T[e.role];n&&!t.includes(n)&&t.push(n)}return t.filter(Boolean).join(`, `)}function M(e){let t=A(e).replaceAll(` `,`+`),n=e.display??`swap`,r=(e.weights??[]).map(String),i=(e.styles??[`normal`]).includes(`italic`),a=t;if(e.variable){let e=r.length===2?`${r[0]}..${r[1]}`:`100..900`;a=i?`${t}:ital,wght@0,${e};1,${e}`:`${t}:wght@${e}`}else if(r.length>0){if(i){let e=[];for(let t of r)e.push(`0,${t}`);for(let t of r)e.push(`1,${t}`);a=`${t}:ital,wght@${e.join(`;`)}`}else a=`${t}:wght@${r.join(`;`)}`}return`https://fonts.googleapis.com/css2?family=${a}&display=${n}`}function te(e){return e.format}function ne(e,t){let n=v(e.path),r=`${t.endsWith(`/`)?t:`${t}/`}${n}`,i=te(e);return i?`url("${r}") format("${i}")`:`url("${r}")`}function re(e,t){let n=A(e),r=e.display??`swap`;return e.files.map(e=>{let i=[`@font-face {`,` font-family: ${k(n)};`,` src: ${ne(e,t)};`];return e.weight!==void 0&&i.push(` font-weight: ${e.weight};`),e.style&&i.push(` font-style: ${e.style};`),e.unicodeRange&&i.push(` unicode-range: ${e.unicodeRange};`),i.push(` font-display: ${r};`,`}`),i.join(`
2
+ `)}).join(`
3
+
4
+ `)}function N(e){return Object.values(e).filter(e=>e.source===`google`).map(e=>`@import url("${M(e)}");`).join(`
5
+ `)}function P(e,t={}){let n=t.urlPrefix??`./fonts/`;return Object.values(e).filter(e=>e.source===`local`).map(e=>re(e,n)).join(`
6
+
7
+ `)}function F(e,t={}){return[N(e),P(e,t)].filter(Boolean).join(`
8
+
9
+ `)}function I(e,t,n={}){if(!t||Object.keys(t).length===0)return e;let r=F(t,n);return r?e?`${r}\n\n${e}`:`${r}\n`:e}const L=i((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function R(e,t){return y(t)?t:x(e,t)}function z(e){return Array.isArray(e)?e.filter(m):m(e)?[e]:[]}function B(e){let t=l(e)?.toLowerCase();return!!(t&&S.has(t))}function V(e){let t=l(e)?.toLowerCase();return t?C[t]:void 0}async function H(e){try{return(await _(e,{withFileTypes:!0})).filter(e=>e.isFile()&&B(e.name)).map(e=>e.name)}catch{return[]}}const U=Object.keys(w).sort((e,t)=>t.length-e.length);function W(e){let t=V(e),n=u(e,{withExtension:!1})??e,r,i=/(?:[-_ ](italic|oblique|it)|Italic|Oblique)$/.exec(n);i&&(r=(i[1]??i[0]).toLowerCase()===`oblique`?`oblique`:`italic`,n=n.slice(0,i.index));let a,o=/[-_ ]([^_-]+)$/.exec(n),s=(o?.[1]??n).toLowerCase().replaceAll(/[\s_]/g,``);for(let e of U)if(s===e||s.endsWith(e)){if(a=w[e],o)n=n.slice(0,o.index);else{let t=n.toLowerCase().lastIndexOf(e);n=t>0?n.slice(0,t):n}break}return{family:n.replaceAll(/[-_]+$/g,``).trim()||n,...a===void 0?{}:{weight:a},...r?{style:r}:{},...t?{format:t}:{}}}function G(e){return e.trim().toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-+|-+$/g,``)}function K(e){if(!e)return;let t=n.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function q(e,t){if(e.source===`google`||e.source===`local`)return e.source;if(t&&t.length>0)return`local`;if(`weights`in e||`subsets`in e||`variable`in e||`styles`in e||m(e.family)&&!t)return`google`}function J(n){if(!p(n))return;let i=`files`in n?K(n.files):void 0,a=q(n,i);if(!a){let t=e.safeParse(n);return t.success?t.data:void 0}let o={...n,source:a,...i?{files:i}:{}},s=a===`google`?r.partial().safeParse({...o,source:`google`}):t.partial().safeParse({...o,source:`local`});if(s.success)return Object.keys(s.data).length>0?s.data:void 0}function Y(e){return p(e)&&`path`in e}async function X(e){let t=d(e,`package.json`);if(!a(t))return;let n;try{n=await s(t)}catch{return}let r={};if(m(n.name)&&(r.name=n.name,r.title=n.name),m(n.description)&&(r.description=n.description),Array.isArray(n.keywords)){let e=n.keywords.filter(m);e.length>0&&(r.tags=e)}let i=n.razorwind,o;if(Y(i)||Array.isArray(i)){let e=K(i);e&&(o={source:`local`,files:e})}else p(i)&&(o=J(i));let c=L(o??{},r);return Object.keys(c).length>0?c:void 0}async function ie(e){let t=d(e,`font.json`);if(!a(t))return;let n;try{n=await s(t)}catch{return}if(Y(n)||Array.isArray(n)){let e=K(n);if(e)return{source:`local`,files:e}}return J(n)}function ae(e,t,n){return t?.length?t.map(t=>{let n=c(t.path,e);return{...t,path:n,format:t.format??V(t.path)}}):n.map(t=>{let n=W(t);return{path:c(t,e),format:n.format,...n.weight===void 0?{}:{weight:n.weight},...n.style?{style:n.style}:{}}})}async function oe(t){let n=await X(t),r=await ie(t),i=await H(t);if(!n&&!r&&i.length===0)return;let a=L(r??{},n??{}),o=ee(t),s=m(a.name)?a.name:o,c=m(a.title)?a.title:f(s),l=ae(t,a.source===`local`?a.files:void 0,i),u=(a.source??(l.length>0?`local`:`google`))===`google`?{...a,source:`google`,name:s,title:c,family:a.family??c}:{...a,source:`local`,name:s,title:c,family:a.family??c,files:l.length>0?l:a.source===`local`?a.files:l},d=e.safeParse(u);return d.success?d.data:void 0}function se(e,t,n){let r=G(t)||`font`,i=e[r];if(i?.source===`local`){let t=[...i.files],a=t.findIndex(e=>e.path===n.path);a>=0?t[a]=n:t.push(n),e[r]={...i,files:t};return}i||(e[r]={source:`local`,name:r,title:f(t),family:t,files:[n]})}async function ce(e){let t={},n=z(e.options.fontsPath);for(let r of n){let n=R(e.cwd,r);if(!(!a(n)||!o(n)))try{let e=await _(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=d(n,r.name);if(r.isDirectory()){let n=await oe(e);if(n){let e=t[n.name];t[n.name]=e?L(n,e):n}continue}if(r.isFile()&&B(r.name)){let n=W(r.name);se(t,n.family,{path:e,format:n.format,...n.weight===void 0?{}:{weight:n.weight},...n.style?{style:n.style}:{}})}}}catch{continue}}return t}const le=/@font-face\s*\{([^{}]*)\}/gi,ue=/@import\s+(?:url\()?['"]?(https:\/\/fonts\.googleapis\.com\/css2?\?[^)'"\s]+)['"]?\)?\s*;/gi,de=/url\(\s*['"]?(https:\/\/fonts\.googleapis\.com\/css2?\?[^)'"\s]+)['"]?\s*\)/gi,fe=/font-family\s*:\s*([^;]+);/i,pe=/font-weight\s*:\s*([^;]+);/i,me=/font-style\s*:\s*(normal|italic|oblique)/i,he=/font-display\s*:\s*(auto|block|swap|fallback|optional)/i,ge=/unicode-range\s*:\s*([^;]+);/i,_e=/url\(\s*['"]?([^)'"]+)['"]?\s*\)(?:\s*format\(\s*['"]?([\w-]+)['"]?\s*\))?/i;function Z(e){return e.trim().toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-+|-+$/g,``)}function ve(e){return e.trim().replaceAll(/^['"]|['"]$/g,``).trim()}function Q(e){if(!e)return;let t=e.trim(),n=Number.parseInt(t,10);return Number.isNaN(n)?t||void 0:n}function ye(e,t){if(e){let t=e.toLowerCase();if(t===`woff2`||t===`woff`||t===`truetype`||t===`opentype`||t===`svg`)return t}let n=t.split(`.`).pop()?.split(`?`)[0]?.toLowerCase();return n?C[n]:void 0}function be(e,t,n,r){let i=Z(t)||`font`,a=e[i];if(a?.source===`local`){let t=[...a.files],r=t.findIndex(e=>e.path===n.path);r>=0?t[r]=n:t.push(n),e[i]={...a,files:t};return}a||(e[i]={source:`local`,name:i,title:f(t),family:t,...r?{display:r}:{},files:[n]})}function $(e){let t;try{t=new URL(e)}catch{return[]}let n=t.searchParams.get(`display`),r=n===`auto`||n===`block`||n===`swap`||n===`fallback`||n===`optional`?n:void 0,i=t.searchParams.getAll(`family`),a=[];for(let e of i){let[t,n]=e.split(`:`),i=(t??``).replaceAll(`+`,` `).trim();if(!i)continue;let o=Z(i),s=[],c=new Set,l=!1;if(n){let[e,t]=n.split(`@`),r=(e??``).split(`,`),i=r.indexOf(`ital`),a=r.indexOf(`wght`),o=(t??``).split(`;`).filter(Boolean);for(let e of o){let t=e.split(`,`);i>=0&&t[i]===`1`?c.add(`italic`):c.add(`normal`);let n=a>=0?t[a]:t[0];if(n?.includes(`..`)){l=!0;let[e,t]=n.split(`..`);e&&s.push(e),t&&s.push(t)}else{let e=Q(n);e!==void 0&&!s.includes(e)&&s.push(e)}}}a.push({source:`google`,name:o||`font`,title:f(i),family:i,...r?{display:r}:{},...s.length>0?{weights:s}:{},...c.size>0?{styles:[...c]}:{},...l?{variable:!0}:{}})}return a}function xe(e){let t=new Set;for(let n of e.matchAll(ue))n[1]&&t.add(n[1]);for(let n of e.matchAll(de))n[1]&&t.add(n[1]);return[...t]}function Se(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,``),n={};for(let e of xe(t))for(let t of $(e))n[t.name]??=t;for(let e of t.matchAll(le)){let t=e[1]??``,r=ve(fe.exec(t)?.[1]??``);if(!r)continue;let i=_e.exec(t),a=i?.[1];if(!a||a.includes(`fonts.googleapis.com`))continue;let o={path:a,format:ye(i?.[2],a),weight:Q(pe.exec(t)?.[1]),style:me.exec(t)?.[1],unicodeRange:ge.exec(t)?.[1]?.trim()},s=he.exec(t)?.[1];be(n,r,o,s)}return n}function Ce(e){return!e||Object.keys(e).length===0}function we(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]??=r;return n}function Te(e,t){if(!e)return;let n=Array.isArray(t)?t:[t];for(let t of n){let n=Object.values(e).find(e=>e.role===t);if(n)return n}}export{T as _,ce as a,w as b,A as c,N as d,P as f,C as g,S as h,Te as i,I as l,O as m,we as n,W as o,M as p,Se as r,j as s,Ce as t,F as u,D as v,E as y};
10
+ //# sourceMappingURL=fonts-CUwsBEd5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts-CUwsBEd5.mjs","names":[],"sources":[],"mappings":""}
@@ -0,0 +1 @@
1
+ let e=require("zod");const t=e.z.enum([`sans`,`serif`,`mono`,`display`,`heading`,`body`,`code`]),n=e.z.enum([`auto`,`block`,`swap`,`fallback`,`optional`]),r=e.z.enum([`woff2`,`woff`,`truetype`,`opentype`,`svg`]),i=e.z.object({path:e.z.string(),format:r.optional(),weight:e.z.union([e.z.number(),e.z.string()]).optional(),style:e.z.enum([`normal`,`italic`,`oblique`]).optional(),unicodeRange:e.z.string().optional()}),a=e.z.object({name:e.z.string(),title:e.z.string(),family:e.z.string().optional().describe(`CSS font-family name. Defaults to title or name.`),role:t.optional(),fallbacks:e.z.array(e.z.string()).optional(),display:n.optional(),category:e.z.string().optional(),description:e.z.string().optional(),tags:e.z.array(e.z.string()).optional()}),o=a.extend({source:e.z.literal(`google`),weights:e.z.array(e.z.union([e.z.number(),e.z.string()])).optional(),styles:e.z.array(e.z.enum([`normal`,`italic`])).optional(),subsets:e.z.array(e.z.string()).optional(),variable:e.z.boolean().optional()}),s=a.extend({source:e.z.literal(`local`),files:e.z.array(i).min(1)}),c=e.z.discriminatedUnion(`source`,[o,s]),l=e.z.record(e.z.string(),c);Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
@@ -0,0 +1,100 @@
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-Crr8KMUY.mjs";
2
+ import "./index-ktFi0nZL.mjs";
3
+ import { t as Config } from "./config-CEPqgKnD.mjs";
4
+ import { ExecutionContext } from "@power-plant/core";
5
+ //#region src/lib/fonts/constants.d.ts
6
+ declare const FONT_EXTENSIONS: Set<string>;
7
+ declare const FONT_FORMAT_FROM_EXTENSION: Record<string, FontFileFormat>;
8
+ declare const WEIGHT_FROM_SUFFIX: Record<string, number>;
9
+ declare const GENERIC_FALLBACK_FROM_ROLE: Record<FontRole, string>;
10
+ declare const SANS_ROLES: FontRole[];
11
+ declare const MONO_ROLES: FontRole[];
12
+ //#endregion
13
+ //#region src/lib/fonts/copy.d.ts
14
+ /**
15
+ * Copy local font files into `destDir`. Google Fonts entries are skipped.
16
+ *
17
+ * @returns Destination paths that were written.
18
+ */
19
+ declare function copyFontFiles(fonts: Fonts | undefined, destDir: string): Promise<string[]>;
20
+ //#endregion
21
+ //#region src/lib/fonts/css.d.ts
22
+ interface RenderFontCssOptions {
23
+ /**
24
+ * Directory prefix used in `url()` for local font files.
25
+ *
26
+ * @defaultValue `"./fonts/"`
27
+ */
28
+ urlPrefix?: string;
29
+ }
30
+ /**
31
+ * Resolve the CSS `font-family` name for a font entry.
32
+ */
33
+ declare function fontFamilyName(font: Font): string;
34
+ /**
35
+ * Build a CSS `font-family` stack: quoted family, configured fallbacks, then
36
+ * a generic fallback from `role`.
37
+ */
38
+ declare function cssFontFamily(font: Font): string;
39
+ /**
40
+ * Build a Google Fonts CSS2 stylesheet URL.
41
+ *
42
+ * @example
43
+ * `https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700&display=swap`
44
+ */
45
+ declare function toGoogleFontsCssUrl(font: GoogleFont): string;
46
+ /**
47
+ * Google Fonts `@import` rules. Must stay ahead of other CSS except `@charset`.
48
+ */
49
+ declare function renderGoogleFontImports(fonts: Fonts): string;
50
+ /**
51
+ * Local `@font-face` rules.
52
+ */
53
+ declare function renderLocalFontFaces(fonts: Fonts, options?: RenderFontCssOptions): string;
54
+ /**
55
+ * Emit `@import` (Google Fonts) and `@font-face` (local files) CSS.
56
+ */
57
+ declare function renderFontCss(fonts: Fonts, options?: RenderFontCssOptions): string;
58
+ /**
59
+ * Prepend font loading CSS ahead of an existing stylesheet.
60
+ */
61
+ declare function prependFontCss(css: string, fonts: Fonts | undefined, options?: RenderFontCssOptions): string;
62
+ //#endregion
63
+ //#region src/lib/fonts/load.d.ts
64
+ interface ParsedFontFilename {
65
+ family: string;
66
+ weight?: number;
67
+ style?: FontFile["style"];
68
+ format?: FontFileFormat;
69
+ }
70
+ /**
71
+ * Infer family / weight / style from a font filename such as
72
+ * `Inter-BoldItalic.woff2`.
73
+ */
74
+ declare function parseFontFilename(filename: string): ParsedFontFilename;
75
+ /**
76
+ * Load fonts from `fontsPath` directories.
77
+ *
78
+ * Supports:
79
+ * 1. Per-font directories with `package.json` / `font.json` metadata
80
+ * 2. Flat font files at the fonts path root, grouped by family prefix
81
+ */
82
+ declare function loadFonts(context: ExecutionContext<Schema, Config, void>): Promise<Fonts>;
83
+ //#endregion
84
+ //#region src/lib/fonts/parse.d.ts
85
+ /**
86
+ * Parse `@font-face` rules and Google Fonts CSS URLs into a {@link Fonts} record.
87
+ */
88
+ declare function parseCssFonts(contents: string): Fonts;
89
+ declare function isEmptyFonts(fonts: Fonts | undefined): boolean;
90
+ /**
91
+ * Merge `extra` into `base` without overwriting existing keys.
92
+ */
93
+ declare function mergeFonts(base: Fonts | undefined, extra: Fonts | undefined): Fonts;
94
+ /**
95
+ * Find the first font whose `role` matches one of `roles`, in order.
96
+ */
97
+ declare function pickFontByRole(fonts: Fonts | undefined, roles: Font["role"] | Array<NonNullable<Font["role"]>>): Font | undefined;
98
+ //#endregion
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-D7VrdiAn.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D7VrdiAn.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":""}
@@ -0,0 +1,100 @@
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-Crr8KMUY.cjs";
2
+ import "./index-DovYOOtL.cjs";
3
+ import { t as Config } from "./config-BjuUx31T.cjs";
4
+ import { ExecutionContext } from "@power-plant/core";
5
+ //#region src/lib/fonts/constants.d.ts
6
+ declare const FONT_EXTENSIONS: Set<string>;
7
+ declare const FONT_FORMAT_FROM_EXTENSION: Record<string, FontFileFormat>;
8
+ declare const WEIGHT_FROM_SUFFIX: Record<string, number>;
9
+ declare const GENERIC_FALLBACK_FROM_ROLE: Record<FontRole, string>;
10
+ declare const SANS_ROLES: FontRole[];
11
+ declare const MONO_ROLES: FontRole[];
12
+ //#endregion
13
+ //#region src/lib/fonts/copy.d.ts
14
+ /**
15
+ * Copy local font files into `destDir`. Google Fonts entries are skipped.
16
+ *
17
+ * @returns Destination paths that were written.
18
+ */
19
+ declare function copyFontFiles(fonts: Fonts | undefined, destDir: string): Promise<string[]>;
20
+ //#endregion
21
+ //#region src/lib/fonts/css.d.ts
22
+ interface RenderFontCssOptions {
23
+ /**
24
+ * Directory prefix used in `url()` for local font files.
25
+ *
26
+ * @defaultValue `"./fonts/"`
27
+ */
28
+ urlPrefix?: string;
29
+ }
30
+ /**
31
+ * Resolve the CSS `font-family` name for a font entry.
32
+ */
33
+ declare function fontFamilyName(font: Font): string;
34
+ /**
35
+ * Build a CSS `font-family` stack: quoted family, configured fallbacks, then
36
+ * a generic fallback from `role`.
37
+ */
38
+ declare function cssFontFamily(font: Font): string;
39
+ /**
40
+ * Build a Google Fonts CSS2 stylesheet URL.
41
+ *
42
+ * @example
43
+ * `https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700&display=swap`
44
+ */
45
+ declare function toGoogleFontsCssUrl(font: GoogleFont): string;
46
+ /**
47
+ * Google Fonts `@import` rules. Must stay ahead of other CSS except `@charset`.
48
+ */
49
+ declare function renderGoogleFontImports(fonts: Fonts): string;
50
+ /**
51
+ * Local `@font-face` rules.
52
+ */
53
+ declare function renderLocalFontFaces(fonts: Fonts, options?: RenderFontCssOptions): string;
54
+ /**
55
+ * Emit `@import` (Google Fonts) and `@font-face` (local files) CSS.
56
+ */
57
+ declare function renderFontCss(fonts: Fonts, options?: RenderFontCssOptions): string;
58
+ /**
59
+ * Prepend font loading CSS ahead of an existing stylesheet.
60
+ */
61
+ declare function prependFontCss(css: string, fonts: Fonts | undefined, options?: RenderFontCssOptions): string;
62
+ //#endregion
63
+ //#region src/lib/fonts/load.d.ts
64
+ interface ParsedFontFilename {
65
+ family: string;
66
+ weight?: number;
67
+ style?: FontFile["style"];
68
+ format?: FontFileFormat;
69
+ }
70
+ /**
71
+ * Infer family / weight / style from a font filename such as
72
+ * `Inter-BoldItalic.woff2`.
73
+ */
74
+ declare function parseFontFilename(filename: string): ParsedFontFilename;
75
+ /**
76
+ * Load fonts from `fontsPath` directories.
77
+ *
78
+ * Supports:
79
+ * 1. Per-font directories with `package.json` / `font.json` metadata
80
+ * 2. Flat font files at the fonts path root, grouped by family prefix
81
+ */
82
+ declare function loadFonts(context: ExecutionContext<Schema, Config, void>): Promise<Fonts>;
83
+ //#endregion
84
+ //#region src/lib/fonts/parse.d.ts
85
+ /**
86
+ * Parse `@font-face` rules and Google Fonts CSS URLs into a {@link Fonts} record.
87
+ */
88
+ declare function parseCssFonts(contents: string): Fonts;
89
+ declare function isEmptyFonts(fonts: Fonts | undefined): boolean;
90
+ /**
91
+ * Merge `extra` into `base` without overwriting existing keys.
92
+ */
93
+ declare function mergeFonts(base: Fonts | undefined, extra: Fonts | undefined): Fonts;
94
+ /**
95
+ * Find the first font whose `role` matches one of `roles`, in order.
96
+ */
97
+ declare function pickFontByRole(fonts: Fonts | undefined, roles: Font["role"] | Array<NonNullable<Font["role"]>>): Font | undefined;
98
+ //#endregion
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-DNAWtBG8.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DNAWtBG8.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,8 +1,8 @@
1
- import { t as Schema } from "./schema-CsbyELyn.mjs";
2
- import "./index-DM8vit-J.mjs";
3
- import { l as Plugin, t as Config } from "./config-rgbP9zhp.mjs";
4
- import { ExecutionContext } from "@power-plant/core";
1
+ import { t as Schema } from "./schema-Crr8KMUY.cjs";
2
+ import "./index-DovYOOtL.cjs";
3
+ import { l as Plugin, t as Config } from "./config-BjuUx31T.cjs";
5
4
  import { Tokens } from "@power-plant/dtcg-schema";
5
+ import { ExecutionContext } from "@power-plant/core";
6
6
  import { Hooks, LogConfig, Parser, PreprocessedTokens } from "style-dictionary/types";
7
7
  //#region src/lib/tokens/constants.d.ts
8
8
  /** Style Dictionary parser hook names registered by Razorwind. */
@@ -110,6 +110,7 @@ interface LoadTokensOptions extends ResolveTokensPathOptions {
110
110
  splitThemes?: boolean;
111
111
  }
112
112
  type LoadedTokens = Tokens | Record<string, Tokens>;
113
+ declare function isEmptyTokens(tokens: unknown): boolean;
113
114
  /**
114
115
  * Load design tokens via Style Dictionary parser hooks.
115
116
  *
@@ -198,5 +199,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
198
199
  */
199
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
200
201
  //#endregion
201
- export { TOKEN_PARSER_NAMES as A, normalizeTokenTree as C, THEME_BASENAME_PATTERN as D, RazorwindParserName as E, TOKEN_DIRECTORY_GLOB as O, nestFlatTokens as S, DEFAULT_TOKEN_PATH_CANDIDATES as T, resolveTokensSource as _, getRazorwindParserHooks as a, inferTypeFromPath as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolvedTokensSource as g, ResolveTokensPathOptions as h, getExtractionHooks as i, TYPE_PATH_HINTS as j, TOKEN_FILE_EXTENSIONS as k, registerRazorwindParsers as l, loadTokensOrThrow as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, loadTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, themeKeyFromPath as v, parseCssCustomProperties as w, inferValue as x, InferredTokenType as y };
202
- //# sourceMappingURL=index-D6-DvdGv.d.mts.map
202
+ export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_PATH_HINTS as M, THEME_BASENAME_PATTERN as O, 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 };
203
+ //# sourceMappingURL=index-DXx1b3vZ.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-lcz6riNX.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;;;;;;;iBCvDd,yBACd,mBACC;;;KCgCS;;;;iBAmEI,kBACd,iBACC;;;;iBAiBa,WACd,cACA;EACG;EAAgB,OAAO;;;;;iBAsPZ,mBACd,gBACA;;;;;;;;iBA2Cc,eACd,MAAM,0BACL;;;UC9Zc;;;;EAIf;;;;EAKA;;;;EAKA,gBAAgB;;UAGD;;;;;;;EAOf;;;;EAKA;;;;EAKA;;;;;;;;;iBAyHc,oBACd,SAAS,2BACR;;;;iBAqFa,iBAAiB;;;UCrNhB,0BAA0B;;;;;;EAMzC;;KAGU,eAAe,SAAS,eAAe;;;;;;;;;iBA6I7B,WACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;iBAsCW,kBACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;;;iBC5NK,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
+ {"version":3,"file":"index-DXx1b3vZ.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;;;;;;;iBCvDd,yBACd,mBACC;;;KCgCS;;;;iBAmEI,kBACd,iBACC;;;;iBAiBa,WACd,cACA;EACG;EAAgB,OAAO;;;;;iBAsPZ,mBACd,gBACA;;;;;;;;iBA2Cc,eACd,MAAM,0BACL;;;UC9Zc;;;;EAIf;;;;EAKA;;;;EAKA,gBAAgB;;UAGD;;;;;;;EAOf;;;;EAKA;;;;EAKA;;;;;;;;;iBAyHc,oBACd,SAAS,2BACR;;;;iBAqFa,iBAAiB;;;UCrNhB,0BAA0B;;;;;;EAMzC;;KAGU,eAAe,SAAS,eAAe;iBAEnC,cAAc;;;;;;;;;iBA2IR,WACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;iBAsCW,kBACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;;;iBC5NK,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,3 +1,3 @@
1
- import "./schema-CsbyELyn.cjs";
1
+ import "./schema-Crr8KMUY.cjs";
2
2
  import { Token, Tokens as Tokens$1, tokenSchema, tokensSchema } from "@power-plant/dtcg-schema";
3
3
  export { tokensSchema as i, Tokens$1 as n, tokenSchema as r, Token as t };
@@ -1,8 +1,8 @@
1
- import { t as Schema } from "./schema-CsbyELyn.cjs";
2
- import "./index-BjSOzDOH.cjs";
3
- import { l as Plugin, t as Config } from "./config-25eDAKIq.cjs";
4
- import { Tokens } from "@power-plant/dtcg-schema";
1
+ import { t as Schema } from "./schema-Crr8KMUY.mjs";
2
+ import "./index-ktFi0nZL.mjs";
3
+ import { l as Plugin, t as Config } from "./config-CEPqgKnD.mjs";
5
4
  import { ExecutionContext } from "@power-plant/core";
5
+ import { Tokens } from "@power-plant/dtcg-schema";
6
6
  import { Hooks, LogConfig, Parser, PreprocessedTokens } from "style-dictionary/types";
7
7
  //#region src/lib/tokens/constants.d.ts
8
8
  /** Style Dictionary parser hook names registered by Razorwind. */
@@ -110,6 +110,7 @@ interface LoadTokensOptions extends ResolveTokensPathOptions {
110
110
  splitThemes?: boolean;
111
111
  }
112
112
  type LoadedTokens = Tokens | Record<string, Tokens>;
113
+ declare function isEmptyTokens(tokens: unknown): boolean;
113
114
  /**
114
115
  * Load design tokens via Style Dictionary parser hooks.
115
116
  *
@@ -198,5 +199,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
198
199
  */
199
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
200
201
  //#endregion
201
- export { TOKEN_PARSER_NAMES as A, normalizeTokenTree as C, THEME_BASENAME_PATTERN as D, RazorwindParserName as E, TOKEN_DIRECTORY_GLOB as O, nestFlatTokens as S, DEFAULT_TOKEN_PATH_CANDIDATES as T, resolveTokensSource as _, getRazorwindParserHooks as a, inferTypeFromPath as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolvedTokensSource as g, ResolveTokensPathOptions as h, getExtractionHooks as i, TYPE_PATH_HINTS as j, TOKEN_FILE_EXTENSIONS as k, registerRazorwindParsers as l, loadTokensOrThrow as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, loadTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, themeKeyFromPath as v, parseCssCustomProperties as w, inferValue as x, InferredTokenType as y };
202
- //# sourceMappingURL=index-lcz6riNX.d.cts.map
202
+ export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_PATH_HINTS as M, THEME_BASENAME_PATTERN as O, 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 };
203
+ //# sourceMappingURL=index-crrCGMN9.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-D6-DvdGv.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
+ {"version":3,"file":"index-crrCGMN9.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,3 +1,3 @@
1
- import "./schema-CsbyELyn.mjs";
1
+ import "./schema-Crr8KMUY.mjs";
2
2
  import { Token, Tokens as Tokens$1, tokenSchema, tokensSchema as tokensSchema$1 } from "@power-plant/dtcg-schema";
3
3
  export { tokensSchema$1 as i, Tokens$1 as n, tokenSchema as r, Token as t };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-93daQRSN.cjs"),n=require("./tokens-DP2GoUvv.cjs"),r=require("./plugin.cjs");let i=require("@power-plant/core"),a=require("@stryke/type-checks/is-empty-object"),o=require("defu"),s=require("@stryke/fs/exists"),c=require("@stryke/fs/is-file"),l=require("@stryke/fs/json"),u=require("@stryke/fs/list-files"),d=require("@stryke/path/append"),f=require("@stryke/path/file-path-fns"),p=require("@stryke/path/join"),m=require("@stryke/string-format/title-case"),h=require("@stryke/type-checks/is-set-object"),g=require("@stryke/type-checks/is-set-string"),_=require("node:fs/promises"),v=require("node:path"),ee=require("@stryke/env/get-env-paths"),y=require("@stryke/path/find"),b=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),x=require("c12"),ne=require("jiti"),S=require("node:fs"),C=require("node:os");C=e.t(C,1);var re=`0.0.45`;function w(e){return!!((0,g.isSetString)(e)||(0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))}function T(e){if((0,g.isSetString)(e))return e;if((0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))return e.url}const E=t.o.partial(),D=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),O=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function k(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function ie(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function A(e){let t=e.toLowerCase();if(D.has(t))return t}function ae(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&D.has(t))}function j(e){if(!e)return;let n=t.a.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.a.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function M(e){if(!e)return;let n=t.s.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){if((0,g.isSetString)(n)){let e=(0,f.findFileName)(n,{withExtension:!1})||n,i=t.s.safeParse({name:e,path:n});i.success&&r.push(i.data);continue}let e=t.s.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function N(e){if(!(0,h.isSetObject)(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 P(e){return(0,h.isSetObject)(e)&&`path`in e}async function oe(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),(0,h.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,h.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c,u;P(a)?c=j(a):(0,h.isSetObject)(a)&&(o=N(a),`files`in a&&(c=j(a.files)),`usage`in a&&(u=M(a.usage)));let d=O(o??{},r);return c?.length&&(d.files=c),u?.length&&(d.usage=u),Object.keys(d).length>0?d:void 0}async function se(e){let t=(0,p.joinPaths)(e,`component.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(P(n)||Array.isArray(n)){let e=j(n);if(e)return{files:e}}if(!(0,h.isSetObject)(n))return;let r=N(n)??{},i=`files`in n?j(n.files):void 0,a=`usage`in n?M(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 ce(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ae(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function le(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.language??A(r),a=t.name||(0,f.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,s.existsSync)(n)?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,p.joinPaths)(e,`usage`);if(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n))return;let r=await ce(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,p.joinPaths)(n,e),r=A((0,f.findFileExtensionSafe)(e)??``),i=(0,f.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,m.titleCase)(i),path:t,content:await(0,_.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ue(e,t){let n=t??(await(0,u.listFiles)(e)).filter(e=>(0,f.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,_.readFile)((0,d.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,_.readFile)((0,d.appendPath)(t.path,e),`utf8`):void 0,path:(0,d.appendPath)(t.path,e)}))}async function de(e){let n=await oe(e),r=await se(e);if(!n&&!r)return;let i=O(r??{},n??{}),a=(0,g.isSetString)(i.name)?i.name:(0,f.findFolderName)(e),o=(0,g.isSetString)(i.title)?i.title:(0,m.titleCase)(a),s=t.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await le(e,s.data.usage);return{...s.data,files:await ue(e,s.data.files),...c?.length?{usage:c}:{}}}async function F(e){let t={},n=ie(e.options.componentsPath);for(let r of n){let n=k(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await de((0,p.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const fe=t.r.partial(),I=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),L=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function pe(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function me(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function z(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&I.has(t))}function he(e){return n.y.test(e)}async function B(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&z(e.name)).map(e=>e.name)}catch{return[]}}function V(e){if(!e)return;let n=t.n.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.n.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function H(e){if(!(0,h.isSetObject)(e))return;let t=fe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function U(e){return(0,h.isSetObject)(e)&&`path`in e}async function W(e,t,n){let r=(0,d.appendPath)(e,t),i=R((0,f.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,_.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function ge(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c;U(a)?c=V(a):(0,h.isSetObject)(a)&&(o=H(a),`files`in a&&(c=V(a.files)));let u=L(o??{},r);return c?.length&&(u.files=c),Object.keys(u).length>0?u:void 0}async function _e(e){let t=(0,p.joinPaths)(e,`icon.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(U(n)||Array.isArray(n)){let e=V(n);if(e)return{files:e}}return H(n)}async function ve(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.type??R(r)??`file`,a=t.content===void 0?i===`svg`?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await B(e);return Promise.all(n.map(t=>W(t,e)))}async function ye(e){let n=await ge(e),r=await _e(e),i=await B(e);if(!n&&!r&&i.length===0)return;let a=L(r??{},n??{}),o=(0,g.isSetString)(a.name)?a.name:(0,f.findFolderName)(e),s=(0,g.isSetString)(a.title)?a.title:(0,m.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await ve(e,c.data.files)}}function G(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,m.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 be(e,t,n){let r=await B(e);for(let i of r){let r=(0,f.findFileName)(i,{withExtension:!1});r&&G(n,r,await W(i,e,t))}}async function K(e){let t={},n=me(e.options.iconsPath);for(let r of n){let n=pe(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,p.joinPaths)(n,r.name);if(r.isDirectory()){if(he(r.name)){await be(e,r.name,t);continue}let n=await ye(e);if(n){let e=t[n.name];t[n.name]=e?L(n,e):n}continue}if(r.isFile()&&z(r.name)){let e=(0,f.findFileName)(r.name,{withExtension:!1});if(!e)continue;G(t,e,await W(r.name,n))}}}catch{continue}}return t}function q(e,t){let n=e[t];return(0,g.isSetString)(n)?n:void 0}function J(e){let t={};(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=T(e.repository);n&&(t.repository=n),(0,g.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,h.isSetObject)(r)){let t=r,n=q(t,`title`),a=q(t,`name`),o=q(t,`description`),s=q(t,`homepage`),c=q(t,`logo`),l=T(t.repository);a?i.name=a:(0,g.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,g.isSetString)(i.name)&&(i.title=(0,m.titleCase)(i.name)),o?i.description=o:(0,g.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:w(e.homepage)?i.homepage=T(e.homepage):w(e.author)?i.homepage=T(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&w(e.maintainers[0])?i.homepage=T(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&w(e.contributors[0])?i.homepage=T(e.contributors[0]):w(e.bugs)&&(i.homepage=T(e.bugs)),c&&(i.logo=c),l?i.repository=l:w(e.repository)&&(i.repository=T(e.repository))}return(0,o.defu)(i,t)}function Y(e){let t={};return(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.title)&&(t.title=e.title),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.repository)&&(t.repository=e.repository),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,g.isSetString)(e.logo)&&(t.logo=e.logo),t}async function X(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return{};let n;try{n=await(0,l.readJsonFile)(t)}catch{return{}}return J(n)}async function Z(e,t){let n=await X(e),r=Y(t);return(0,o.defu)(r,n)}const Q=C.default.homedir();async function $(e,t){let n=t.configFile&&(0,S.existsSync)((0,b.replacePath)(t.configFile,e))?(0,b.replacePath)(t.configFile,e):t.configFile&&(0,S.existsSync)(t.configFile)?t.configFile:(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.ts`))?(0,p.joinPaths)(e,`razorwind.config.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.js`))?(0,p.joinPaths)(e,`razorwind.config.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mts`))?(0,p.joinPaths)(e,`razorwind.config.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mjs`))?(0,p.joinPaths)(e,`razorwind.config.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cjs`))?(0,p.joinPaths)(e,`razorwind.config.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cts`))?(0,p.joinPaths)(e,`razorwind.config.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.json`))?(0,p.joinPaths)(e,`razorwind.config.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yaml`))?(0,p.joinPaths)(e,`razorwind.config.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yml`))?(0,p.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),s={};if(n){let r=await a.import(n,{default:!0});if(r){let i={};(0,te.isFunction)(r)?i=await Promise.resolve(r({cwd:e,mode:t.mode??`development`})):((0,h.isSetObject)(r)||Array.isArray(r))&&(i=r),((0,h.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,u]=await Promise.all([(0,x.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:Q,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,o.defu)({cwd:e,envPaths:{...r,home:Q}},t,s,(0,h.isSetObject)(c?.config)?{...c.config}:{},(0,h.isSetObject)(l?.config)?{...l.config}:{},(0,h.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,p.joinPaths)(e,`assets/icons`),plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=(0,g.isSetString)(d.componentsPath)?(0,y.findFilePath)(d.componentsPath):e;if(Array.isArray(d.iconsPath)){let t=d.iconsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));d.iconsPath=t.length>0?t:(0,p.joinPaths)(e,`assets/icons`)}else d.iconsPath=(0,g.isSetString)(d.iconsPath)?(0,y.findFilePath)(d.iconsPath):(0,p.joinPaths)(e,`assets/icons`);return Array.isArray(d.plugins)||(d.plugins=[]),d}function xe(e){return e}const Se=(0,i.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:re,tags:[`razorwind`,`dtcg`]},schema:(0,i.defineSchema)({schema:t.t}),input:async e=>{let t=(0,i.useExecution)();if(t.options=await $(t.cwd,e),t.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 r=t.options.tokens;(!r||(0,a.isEmptyObject)(r))&&(r=await n.t(t));let s={...await Z(t.cwd,t.options),tokens:r??{},components:(0,o.defu)(t.options.components??{},await F(t)??{}),icons:(0,o.defu)(t.options.icons??{},await K(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))s=await e.extract(s,t.options);if(!s.tokens||(0,a.isEmptyObject)(s.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 e of t.options.plugins.filter(e=>e.validate))await e.validate(s,t.options);return s},generator:async e=>{let t=(0,i.useExecution)(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=(0,o.defu)(i,n)}return n}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=n.v,exports.RAZORWIND_INFER_PREPROCESSOR=n.a,exports.THEME_BASENAME_PATTERN=n.y,exports.TOKEN_DIRECTORY_GLOB=n.b,exports.TOKEN_FILE_EXTENSIONS=n.x,exports.TYPE_PATH_HINTS=n.C,exports.WINDIE_PARSERS=n.S,exports.razorwindParsers=n.S,exports.defineConfig=xe,exports.definePlugin=r.definePlugin,exports.generator=Se,exports.getExtractionHooks=n.o,exports.getRazorwindParserHooks=n.s,exports.getRazorwindPreprocessorHooks=n.c,exports.inferTypeFromPath=n.m,exports.inferValue=n.h,exports.loadComponents=F,exports.loadIcons=K,exports.loadSchemaMetaFromPackageJson=X,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.g,exports.normalizeRepository=T,exports.normalizeTokenTree=n._,exports.parseCssCustomProperties=n.p,exports.razorwindInferPreprocessor=n.l,exports.registerRazorwindHooks=n.u,exports.registerRazorwindParsers=n.d,exports.resolveConfig=$,exports.resolveSchemaMeta=Z,exports.resolveTokensSource=n.r,exports.schemaMetaFromConfig=Y,exports.schemaMetaFromPackageJson=J,exports.styleDictionaryLogOptions=n.f,exports.themeKeyFromPath=n.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-D0sXEBjV.cjs"),n=require("./fonts-75PPb25H.cjs"),r=require("./tokens-BSuKch7x.cjs"),i=require("./plugin.cjs");let a=require("@power-plant/core"),o=require("defu"),s=require("@stryke/fs/exists"),c=require("@stryke/fs/is-file"),l=require("@stryke/fs/json"),u=require("@stryke/fs/list-files"),d=require("@stryke/path/append"),f=require("@stryke/path/file-path-fns"),p=require("@stryke/path/join"),m=require("@stryke/string-format/title-case"),h=require("@stryke/type-checks/is-set-object"),g=require("@stryke/type-checks/is-set-string"),_=require("node:fs/promises"),v=require("node:path"),ee=require("@stryke/env/get-env-paths"),y=require("@stryke/path/find"),b=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),x=require("c12"),ne=require("jiti"),S=require("node:fs"),C=require("node:os");C=e.t(C,1);var re=`0.0.47`;function w(e){return!!((0,g.isSetString)(e)||(0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))}function T(e){if((0,g.isSetString)(e))return e;if((0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))return e.url}const ie=t.o.partial(),E=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),D=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ae(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function oe(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function O(e){let t=e.toLowerCase();if(E.has(t))return t}function se(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&E.has(t))}function k(e){if(!e)return;let n=t.a.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.a.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function A(e){if(!e)return;let n=t.s.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){if((0,g.isSetString)(n)){let e=(0,f.findFileName)(n,{withExtension:!1})||n,i=t.s.safeParse({name:e,path:n});i.success&&r.push(i.data);continue}let e=t.s.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function j(e){if(!(0,h.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=ie.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function M(e){return(0,h.isSetObject)(e)&&`path`in e}async function ce(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),(0,h.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,h.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c,u;M(a)?c=k(a):(0,h.isSetObject)(a)&&(o=j(a),`files`in a&&(c=k(a.files)),`usage`in a&&(u=A(a.usage)));let d=D(o??{},r);return c?.length&&(d.files=c),u?.length&&(d.usage=u),Object.keys(d).length>0?d:void 0}async function le(e){let t=(0,p.joinPaths)(e,`component.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(M(n)||Array.isArray(n)){let e=k(n);if(e)return{files:e}}if(!(0,h.isSetObject)(n))return;let r=j(n)??{},i=`files`in n?k(n.files):void 0,a=`usage`in n?A(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 ue(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&se(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function de(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.language??O(r),a=t.name||(0,f.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,s.existsSync)(n)?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,p.joinPaths)(e,`usage`);if(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n))return;let r=await ue(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,p.joinPaths)(n,e),r=O((0,f.findFileExtensionSafe)(e)??``),i=(0,f.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,m.titleCase)(i),path:t,content:await(0,_.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function fe(e,t){let n=t??(await(0,u.listFiles)(e)).filter(e=>(0,f.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,_.readFile)((0,d.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,_.readFile)((0,d.appendPath)(t.path,e),`utf8`):void 0,path:(0,d.appendPath)(t.path,e)}))}async function pe(e){let n=await ce(e),r=await le(e);if(!n&&!r)return;let i=D(r??{},n??{}),a=(0,g.isSetString)(i.name)?i.name:(0,f.findFolderName)(e),o=(0,g.isSetString)(i.title)?i.title:(0,m.titleCase)(a),s=t.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await de(e,s.data.usage);return{...s.data,files:await fe(e,s.data.files),...c?.length?{usage:c}:{}}}async function N(e){let t={},n=oe(e.options.componentsPath);for(let r of n){let n=ae(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await pe((0,p.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const me=t.r.partial(),P=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),F=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function he(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function ge(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function I(e){let t=e.toLowerCase();if(P.has(t))return t}function L(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&P.has(t))}function _e(e){return r.b.test(e)}async function R(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&L(e.name)).map(e=>e.name)}catch{return[]}}function z(e){if(!e)return;let n=t.n.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.n.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function B(e){if(!(0,h.isSetObject)(e))return;let t=me.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function V(e){return(0,h.isSetObject)(e)&&`path`in e}async function H(e,t,n){let r=(0,d.appendPath)(e,t),i=I((0,f.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,_.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function ve(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c;V(a)?c=z(a):(0,h.isSetObject)(a)&&(o=B(a),`files`in a&&(c=z(a.files)));let u=F(o??{},r);return c?.length&&(u.files=c),Object.keys(u).length>0?u:void 0}async function ye(e){let t=(0,p.joinPaths)(e,`icon.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(V(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}return B(n)}async function be(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.type??I(r)??`file`,a=t.content===void 0?i===`svg`?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await R(e);return Promise.all(n.map(t=>H(t,e)))}async function xe(e){let n=await ve(e),r=await ye(e),i=await R(e);if(!n&&!r&&i.length===0)return;let a=F(r??{},n??{}),o=(0,g.isSetString)(a.name)?a.name:(0,f.findFolderName)(e),s=(0,g.isSetString)(a.title)?a.title:(0,m.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await be(e,c.data.files)}}function U(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,m.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 Se(e,t,n){let r=await R(e);for(let i of r){let r=(0,f.findFileName)(i,{withExtension:!1});r&&U(n,r,await H(i,e,t))}}async function W(e){let t={},n=ge(e.options.iconsPath);for(let r of n){let n=he(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,p.joinPaths)(n,r.name);if(r.isDirectory()){if(_e(r.name)){await Se(e,r.name,t);continue}let n=await xe(e);if(n){let e=t[n.name];t[n.name]=e?F(n,e):n}continue}if(r.isFile()&&L(r.name)){let e=(0,f.findFileName)(r.name,{withExtension:!1});if(!e)continue;U(t,e,await H(r.name,n))}}}catch{continue}}return t}function G(e,t){let n=e[t];return(0,g.isSetString)(n)?n:void 0}function K(e){let t={};(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=T(e.repository);n&&(t.repository=n),(0,g.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,h.isSetObject)(r)){let t=r,n=G(t,`title`),a=G(t,`name`),o=G(t,`description`),s=G(t,`homepage`),c=G(t,`logo`),l=T(t.repository);a?i.name=a:(0,g.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,g.isSetString)(i.name)&&(i.title=(0,m.titleCase)(i.name)),o?i.description=o:(0,g.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:w(e.homepage)?i.homepage=T(e.homepage):w(e.author)?i.homepage=T(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&w(e.maintainers[0])?i.homepage=T(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&w(e.contributors[0])?i.homepage=T(e.contributors[0]):w(e.bugs)&&(i.homepage=T(e.bugs)),c&&(i.logo=c),l?i.repository=l:w(e.repository)&&(i.repository=T(e.repository))}return(0,o.defu)(i,t)}function q(e){let t={};return(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.title)&&(t.title=e.title),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.repository)&&(t.repository=e.repository),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,g.isSetString)(e.logo)&&(t.logo=e.logo),t}async function J(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return{};let n;try{n=await(0,l.readJsonFile)(t)}catch{return{}}return K(n)}async function Y(e,t){let n=await J(e),r=q(t);return(0,o.defu)(r,n)}function X(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Z=C.default.homedir();async function Q(e,t){let n=t.configFile&&(0,S.existsSync)((0,b.replacePath)(t.configFile,e))?(0,b.replacePath)(t.configFile,e):t.configFile&&(0,S.existsSync)(t.configFile)?t.configFile:(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.ts`))?(0,p.joinPaths)(e,`razorwind.config.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.js`))?(0,p.joinPaths)(e,`razorwind.config.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mts`))?(0,p.joinPaths)(e,`razorwind.config.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mjs`))?(0,p.joinPaths)(e,`razorwind.config.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cjs`))?(0,p.joinPaths)(e,`razorwind.config.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cts`))?(0,p.joinPaths)(e,`razorwind.config.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.json`))?(0,p.joinPaths)(e,`razorwind.config.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yaml`))?(0,p.joinPaths)(e,`razorwind.config.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yml`))?(0,p.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),s={};if(n){let r=(0,v.isAbsolute)(n)?n:(0,v.resolve)(e,n),i=await a.import(r,{default:!0});if(i){let r={};(0,te.isFunction)(i)?r=await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):((0,h.isSetObject)(i)||Array.isArray(i))&&(r=i),((0,h.isSetObject)(r)||Array.isArray(r))&&(s={...r,configFile:n})}}let[c,l,u]=await Promise.all([(0,x.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:Z,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,h.isSetObject)(c?.config)?{...c.config}:{},f=n?(0,v.isAbsolute)(n)?n:(0,v.resolve)(e,n):void 0,m=typeof c?.configFile==`string`?c.configFile:void 0;f&&m&&(0,v.resolve)(e,m)===f&&delete d.plugins;let _=(0,o.defu)({cwd:e,envPaths:{...r,home:Z}},t,s,d,(0,h.isSetObject)(l?.config)?{...l.config}:{},(0,h.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,p.joinPaths)(e,`assets/icons`),fontsPath:(0,p.joinPaths)(e,`assets/fonts`),plugins:[]});if(Array.isArray(_.componentsPath)){let t=_.componentsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));_.componentsPath=t.length>0?t:e}else _.componentsPath=(0,g.isSetString)(_.componentsPath)?(0,y.findFilePath)(_.componentsPath):e;if(Array.isArray(_.iconsPath)){let t=_.iconsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));_.iconsPath=t.length>0?t:(0,p.joinPaths)(e,`assets/icons`)}else _.iconsPath=(0,g.isSetString)(_.iconsPath)?(0,y.findFilePath)(_.iconsPath):(0,p.joinPaths)(e,`assets/icons`);if(Array.isArray(_.fontsPath)){let t=_.fontsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));_.fontsPath=t.length>0?t:(0,p.joinPaths)(e,`assets/fonts`)}else _.fontsPath=(0,g.isSetString)(_.fontsPath)?(0,y.findFilePath)(_.fontsPath):(0,p.joinPaths)(e,`assets/fonts`);return _.plugins=X(Array.isArray(_.plugins)?_.plugins:[]),_.verbose=t.verbose===!0||s.verbose===!0,_}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,v.isAbsolute)(e)?e:(0,v.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,_.mkdir)((0,v.dirname)(a),{recursive:!0}),await(0,_.writeFile)(a,o,`utf8`),n.push(a)}return n}function Ce(e){return e}const we=(0,a.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,a.defineSchema)({schema:t.t}),input:async e=>{let t=(0,a.useExecution)();if(t.options=await Q(t.cwd,e),t.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 i=t.options.tokens;(!i||r.t(i))&&(i=await r.n(t));let s={...await Y(t.cwd,t.options),tokens:i??{},components:(0,o.defu)(t.options.components??{},await N(t)??{}),icons:(0,o.defu)(t.options.icons??{},await W(t)??{}),fonts:(0,o.defu)(t.options.fonts??{},await n.a(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))s=await e.extract(s,t.options);if(!s.tokens||r.t(s.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 e of t.options.plugins.filter(e=>e.validate))await e.validate(s,t.options);return s},output:async(e,t,n)=>{await $(n,(0,a.useExecution)().cwd)},generator:async e=>{let t=(0,a.useExecution)(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=(0,o.defu)(i,n)}return n}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=r.y,exports.FONT_EXTENSIONS=n.h,exports.FONT_FORMAT_FROM_EXTENSION=n.g,exports.GENERIC_FALLBACK_FROM_ROLE=n._,exports.MONO_ROLES=n.v,exports.RAZORWIND_INFER_PREPROCESSOR=r.o,exports.SANS_ROLES=n.y,exports.THEME_BASENAME_PATTERN=r.b,exports.TOKEN_DIRECTORY_GLOB=r.x,exports.TOKEN_FILE_EXTENSIONS=r.S,exports.TYPE_PATH_HINTS=r.w,exports.WEIGHT_FROM_SUFFIX=n.b,exports.WINDIE_PARSERS=r.C,exports.razorwindParsers=r.C,exports.copyFontFiles=n.m,exports.cssFontFamily=n.s,exports.defineConfig=Ce,exports.definePlugin=i.definePlugin,exports.fontFamilyName=n.c,exports.generator=we,exports.getExtractionHooks=r.s,exports.getRazorwindParserHooks=r.c,exports.getRazorwindPreprocessorHooks=r.l,exports.inferTypeFromPath=r.h,exports.inferValue=r.g,exports.isEmptyFonts=n.t,exports.isEmptyTokens=r.t,exports.loadComponents=N,exports.loadFonts=n.a,exports.loadIcons=W,exports.loadSchemaMetaFromPackageJson=J,exports.loadTokens=r.n,exports.loadTokensOrThrow=r.r,exports.mergeFonts=n.n,exports.nestFlatTokens=r._,exports.normalizeRepository=T,exports.normalizeTokenTree=r.v,exports.parseCssCustomProperties=r.m,exports.parseCssFonts=n.r,exports.parseFontFilename=n.o,exports.pickFontByRole=n.i,exports.prependFontCss=n.l,exports.razorwindInferPreprocessor=r.u,exports.registerRazorwindHooks=r.d,exports.registerRazorwindParsers=r.f,exports.renderFontCss=n.u,exports.renderGoogleFontImports=n.d,exports.renderLocalFontFaces=n.f,exports.resolveConfig=Q,exports.resolveSchemaMeta=Y,exports.resolveTokensSource=r.i,exports.schemaMetaFromConfig=q,exports.schemaMetaFromPackageJson=K,exports.styleDictionaryLogOptions=r.p,exports.themeKeyFromPath=r.a,exports.toGoogleFontsCssUrl=n.p,exports.uniquePlugins=X,exports.writeGeneratedDocuments=$;