@razorwind/core 0.0.46 → 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 (67) 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-D1ayVOTE.d.mts → index-DXx1b3vZ.d.cts} +5 -5
  16. package/dist/{index-Dk-i27fI.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-Dk-i27fI.d.cts → index-crrCGMN9.d.mts} +5 -5
  19. package/dist/{index-D1ayVOTE.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 +7 -6
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/index.d.mts +7 -6
  25. package/dist/index.mjs +1 -1
  26. package/dist/lib/fonts/index.cjs +1 -0
  27. package/dist/lib/fonts/index.d.cts +2 -0
  28. package/dist/lib/fonts/index.d.mts +2 -0
  29. package/dist/lib/fonts/index.mjs +1 -0
  30. package/dist/lib/tokens/index.cjs +1 -1
  31. package/dist/lib/tokens/index.d.cts +1 -1
  32. package/dist/lib/tokens/index.d.mts +1 -1
  33. package/dist/lib/tokens/index.mjs +1 -1
  34. package/dist/{plugin-CAoFfyMa.d.mts → plugin-BocNoTkM.d.mts} +2 -2
  35. package/dist/plugin-BocNoTkM.d.mts.map +1 -0
  36. package/dist/{plugin-m5Bm4WrK.d.cts → plugin-DMOM9PDs.d.cts} +2 -2
  37. package/dist/{plugin-m5Bm4WrK.d.cts.map → plugin-DMOM9PDs.d.cts.map} +1 -1
  38. package/dist/plugin.d.cts +2 -2
  39. package/dist/plugin.d.mts +2 -2
  40. package/dist/schema/index.cjs +1 -1
  41. package/dist/schema/index.d.cts +3 -3
  42. package/dist/schema/index.d.mts +3 -3
  43. package/dist/schema/index.mjs +1 -1
  44. package/dist/schema-Btk_-NEI.mjs +2 -0
  45. package/dist/schema-Btk_-NEI.mjs.map +1 -0
  46. package/dist/schema-Crr8KMUY.d.cts +540 -0
  47. package/dist/schema-Crr8KMUY.d.cts.map +1 -0
  48. package/dist/schema-Crr8KMUY.d.mts +540 -0
  49. package/dist/schema-Crr8KMUY.d.mts.map +1 -0
  50. package/dist/schema-D0sXEBjV.cjs +1 -0
  51. package/dist/{tokens-pHmukPOW.cjs → tokens-BSuKch7x.cjs} +7 -1
  52. package/dist/{tokens-CFh9AQab.mjs → tokens-CsosSHvJ.mjs} +8 -2
  53. package/dist/tokens-CsosSHvJ.mjs.map +1 -0
  54. package/dist/utils/index.d.cts +2 -2
  55. package/dist/utils/index.d.mts +2 -2
  56. package/package.json +16 -2
  57. package/dist/config-25eDAKIq.d.cts.map +0 -1
  58. package/dist/config-rgbP9zhp.d.mts.map +0 -1
  59. package/dist/plugin-CAoFfyMa.d.mts.map +0 -1
  60. package/dist/schema-93daQRSN.cjs +0 -1
  61. package/dist/schema-CsbyELyn.d.cts +0 -263
  62. package/dist/schema-CsbyELyn.d.cts.map +0 -1
  63. package/dist/schema-CsbyELyn.d.mts +0 -263
  64. package/dist/schema-CsbyELyn.d.mts.map +0 -1
  65. package/dist/schema-buR6a6IP.mjs +0 -2
  66. package/dist/schema-buR6a6IP.mjs.map +0 -1
  67. package/dist/tokens-CFh9AQab.mjs.map +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. */
@@ -200,4 +200,4 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
200
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
201
201
  //#endregion
202
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-D1ayVOTE.d.mts.map
203
+ //# sourceMappingURL=index-DXx1b3vZ.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-Dk-i27fI.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
+ {"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. */
@@ -200,4 +200,4 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
200
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
201
201
  //#endregion
202
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-Dk-i27fI.d.cts.map
203
+ //# sourceMappingURL=index-crrCGMN9.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-D1ayVOTE.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-pHmukPOW.cjs"),r=require("./plugin.cjs");let i=require("@power-plant/core"),a=require("defu"),o=require("@stryke/fs/exists"),s=require("@stryke/fs/is-file"),c=require("@stryke/fs/json"),l=require("@stryke/fs/list-files"),u=require("@stryke/path/append"),d=require("@stryke/path/file-path-fns"),f=require("@stryke/path/join"),p=require("@stryke/string-format/title-case"),m=require("@stryke/type-checks/is-set-object"),h=require("@stryke/type-checks/is-set-string"),g=require("node:fs/promises"),_=require("node:path"),ee=require("@stryke/env/get-env-paths"),v=require("@stryke/path/find"),y=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),b=require("c12"),ne=require("jiti"),x=require("node:fs"),S=require("node:os");S=e.t(S,1);var re=`0.0.46`;function C(e){return!!((0,h.isSetString)(e)||(0,m.isSetObject)(e)&&`url`in e&&(0,h.isSetString)(e.url))}function w(e){if((0,h.isSetString)(e))return e;if((0,m.isSetObject)(e)&&`url`in e&&(0,h.isSetString)(e.url))return e.url}const ie=t.o.partial(),T=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),E=(0,a.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function D(e,t){return(0,_.isAbsolute)(t)?t:(0,_.resolve)(e,t)}function ae(e){return Array.isArray(e)?e.filter(h.isSetString):(0,h.isSetString)(e)?[e]:[]}function O(e){let t=e.toLowerCase();if(T.has(t))return t}function oe(e){let t=(0,d.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&T.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,h.isSetString)(n)){let e=(0,d.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,m.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,m.isSetObject)(e)&&`path`in e}async function se(e){let t=(0,f.joinPaths)(e,`package.json`);if(!(0,o.existsSync)(t))return;let n;try{n=await(0,c.readJsonFile)(t)}catch{return}let r={};(0,h.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,h.isSetString)(n.description)&&(r.description=n.description),(0,h.isSetString)(n.version)&&(r.version=n.version),(0,h.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=w(n.repository);if(i&&(r.repository=i),(0,m.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,m.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(h.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,s,l,u;M(a)?l=k(a):(0,m.isSetObject)(a)&&(s=j(a),`files`in a&&(l=k(a.files)),`usage`in a&&(u=A(a.usage)));let d=E(s??{},r);return l?.length&&(d.files=l),u?.length&&(d.usage=u),Object.keys(d).length>0?d:void 0}async function ce(e){let t=(0,f.joinPaths)(e,`component.json`);if(!(0,o.existsSync)(t))return;let n;try{n=await(0,c.readJsonFile)(t)}catch{return}if(M(n)||Array.isArray(n)){let e=k(n);if(e)return{files:e}}if(!(0,m.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 le(e){try{return(await(0,g.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&oe(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function ue(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,u.appendPath)(t.path,e),r=(0,d.findFileExtensionSafe)(t.path)??``,i=t.language??O(r),a=t.name||(0,d.findFileName)(t.path,{withExtension:!1})||t.path,s=t.content===void 0?(0,o.existsSync)(n)?await(0,g.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...s===void 0?{}:{content:s}}}));let n=(0,f.joinPaths)(e,`usage`);if(!(0,o.existsSync)(n)||!(0,s.isDirectory)(n))return;let r=await le(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,f.joinPaths)(n,e),r=O((0,d.findFileExtensionSafe)(e)??``),i=(0,d.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,p.titleCase)(i),path:t,content:await(0,g.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function de(e,t){let n=t??(await(0,l.listFiles)(e)).filter(e=>(0,d.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,d.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,g.readFile)((0,u.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,d.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,g.readFile)((0,u.appendPath)(t.path,e),`utf8`):void 0,path:(0,u.appendPath)(t.path,e)}))}async function fe(e){let n=await se(e),r=await ce(e);if(!n&&!r)return;let i=E(r??{},n??{}),a=(0,h.isSetString)(i.name)?i.name:(0,d.findFolderName)(e),o=(0,h.isSetString)(i.title)?i.title:(0,p.titleCase)(a),s=t.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await ue(e,s.data.usage);return{...s.data,files:await de(e,s.data.files),...c?.length?{usage:c}:{}}}async function N(e){let t={},n=ae(e.options.componentsPath);for(let r of n){let n=D(e.cwd,r);if(!(!(0,o.existsSync)(n)||!(0,s.isDirectory)(n)))try{let e=await(0,g.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await fe((0,f.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const pe=t.r.partial(),P=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),F=(0,a.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function me(e,t){return(0,_.isAbsolute)(t)?t:(0,_.resolve)(e,t)}function he(e){return Array.isArray(e)?e.filter(h.isSetString):(0,h.isSetString)(e)?[e]:[]}function I(e){let t=e.toLowerCase();if(P.has(t))return t}function L(e){let t=(0,d.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&P.has(t))}function ge(e){return n.b.test(e)}async function R(e){try{return(await(0,g.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,m.isSetObject)(e))return;let t=pe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function V(e){return(0,m.isSetObject)(e)&&`path`in e}async function H(e,t,n){let r=(0,u.appendPath)(e,t),i=I((0,d.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,g.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function _e(e){let t=(0,f.joinPaths)(e,`package.json`);if(!(0,o.existsSync)(t))return;let n;try{n=await(0,c.readJsonFile)(t)}catch{return}let r={};(0,h.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,h.isSetString)(n.description)&&(r.description=n.description),(0,h.isSetString)(n.version)&&(r.version=n.version),(0,h.isSetString)(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(h.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,s,l;V(a)?l=z(a):(0,m.isSetObject)(a)&&(s=B(a),`files`in a&&(l=z(a.files)));let u=F(s??{},r);return l?.length&&(u.files=l),Object.keys(u).length>0?u:void 0}async function ve(e){let t=(0,f.joinPaths)(e,`icon.json`);if(!(0,o.existsSync)(t))return;let n;try{n=await(0,c.readJsonFile)(t)}catch{return}if(V(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}return B(n)}async function ye(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,u.appendPath)(t.path,e),r=(0,d.findFileExtensionSafe)(t.path)??``,i=t.type??I(r)??`file`,a=t.content===void 0?i===`svg`?await(0,g.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 be(e){let n=await _e(e),r=await ve(e),i=await R(e);if(!n&&!r&&i.length===0)return;let a=F(r??{},n??{}),o=(0,h.isSetString)(a.name)?a.name:(0,d.findFolderName)(e),s=(0,h.isSetString)(a.title)?a.title:(0,p.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await ye(e,c.data.files)}}function U(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,p.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 xe(e,t,n){let r=await R(e);for(let i of r){let r=(0,d.findFileName)(i,{withExtension:!1});r&&U(n,r,await H(i,e,t))}}async function W(e){let t={},n=he(e.options.iconsPath);for(let r of n){let n=me(e.cwd,r);if(!(!(0,o.existsSync)(n)||!(0,s.isDirectory)(n)))try{let e=await(0,g.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,f.joinPaths)(n,r.name);if(r.isDirectory()){if(ge(r.name)){await xe(e,r.name,t);continue}let n=await be(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,d.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,h.isSetString)(n)?n:void 0}function K(e){let t={};(0,h.isSetString)(e.name)&&(t.name=e.name),(0,h.isSetString)(e.description)&&(t.description=e.description),(0,h.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=w(e.repository);n&&(t.repository=n),(0,h.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,m.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=w(t.repository);a?i.name=a:(0,h.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,h.isSetString)(i.name)&&(i.title=(0,p.titleCase)(i.name)),o?i.description=o:(0,h.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:C(e.homepage)?i.homepage=w(e.homepage):C(e.author)?i.homepage=w(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&C(e.maintainers[0])?i.homepage=w(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&C(e.contributors[0])?i.homepage=w(e.contributors[0]):C(e.bugs)&&(i.homepage=w(e.bugs)),c&&(i.logo=c),l?i.repository=l:C(e.repository)&&(i.repository=w(e.repository))}return(0,a.defu)(i,t)}function q(e){let t={};return(0,h.isSetString)(e.name)&&(t.name=e.name),(0,h.isSetString)(e.title)&&(t.title=e.title),(0,h.isSetString)(e.description)&&(t.description=e.description),(0,h.isSetString)(e.repository)&&(t.repository=e.repository),(0,h.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,h.isSetString)(e.logo)&&(t.logo=e.logo),t}async function J(e){let t=(0,f.joinPaths)(e,`package.json`);if(!(0,o.existsSync)(t))return{};let n;try{n=await(0,c.readJsonFile)(t)}catch{return{}}return K(n)}async function Y(e,t){let n=await J(e),r=q(t);return(0,a.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=S.default.homedir();async function Q(e,t){let n=t.configFile&&(0,x.existsSync)((0,y.replacePath)(t.configFile,e))?(0,y.replacePath)(t.configFile,e):t.configFile&&(0,x.existsSync)(t.configFile)?t.configFile:(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.js`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.json`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,f.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.ts`))?(0,f.joinPaths)(e,`razorwind.config.ts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.js`))?(0,f.joinPaths)(e,`razorwind.config.js`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.mts`))?(0,f.joinPaths)(e,`razorwind.config.mts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.mjs`))?(0,f.joinPaths)(e,`razorwind.config.mjs`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.cjs`))?(0,f.joinPaths)(e,`razorwind.config.cjs`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.cts`))?(0,f.joinPaths)(e,`razorwind.config.cts`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.json`))?(0,f.joinPaths)(e,`razorwind.config.json`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.yaml`))?(0,f.joinPaths)(e,`razorwind.config.yaml`):(0,x.existsSync)((0,f.joinPaths)(e,`razorwind.config.yml`))?(0,f.joinPaths)(e,`razorwind.config.yml`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},o=(0,ne.createJiti)(e,i),s={};if(n){let r=(0,_.isAbsolute)(n)?n:(0,_.resolve)(e,n),i=await o.import(r,{default:!0});if(i){let r={};(0,te.isFunction)(i)?r=await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):((0,m.isSetObject)(i)||Array.isArray(i))&&(r=i),((0,m.isSetObject)(r)||Array.isArray(r))&&(s={...r,configFile:n})}}let[c,l,u]=await Promise.all([(0,b.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,b.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,b.loadConfig)({cwd:Z,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,m.isSetObject)(c?.config)?{...c.config}:{},p=n?(0,_.isAbsolute)(n)?n:(0,_.resolve)(e,n):void 0,g=typeof c?.configFile==`string`?c.configFile:void 0;p&&g&&(0,_.resolve)(e,g)===p&&delete d.plugins;let S=(0,a.defu)({cwd:e,envPaths:{...r,home:Z}},t,s,d,(0,m.isSetObject)(l?.config)?{...l.config}:{},(0,m.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,f.joinPaths)(e,`assets/icons`),plugins:[]});if(Array.isArray(S.componentsPath)){let t=S.componentsPath.filter(h.isSetString).map(e=>(0,v.findFilePath)(e));S.componentsPath=t.length>0?t:e}else S.componentsPath=(0,h.isSetString)(S.componentsPath)?(0,v.findFilePath)(S.componentsPath):e;if(Array.isArray(S.iconsPath)){let t=S.iconsPath.filter(h.isSetString).map(e=>(0,v.findFilePath)(e));S.iconsPath=t.length>0?t:(0,f.joinPaths)(e,`assets/icons`)}else S.iconsPath=(0,h.isSetString)(S.iconsPath)?(0,v.findFilePath)(S.iconsPath):(0,f.joinPaths)(e,`assets/icons`);return S.plugins=X(Array.isArray(S.plugins)?S.plugins:[]),S}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,_.isAbsolute)(e)?e:(0,_.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,g.mkdir)((0,_.dirname)(a),{recursive:!0}),await(0,g.writeFile)(a,o,`utf8`),n.push(a)}return n}function Se(e){return e}const Ce=(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 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 r=t.options.tokens;(!r||n.t(r))&&(r=await n.n(t));let o={...await Y(t.cwd,t.options),tokens:r??{},components:(0,a.defu)(t.options.components??{},await N(t)??{}),icons:(0,a.defu)(t.options.icons??{},await W(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))o=await e.extract(o,t.options);if(!o.tokens||n.t(o.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(o,t.options);return o},output:async(e,t,n)=>{await $(n,(0,i.useExecution)().cwd)},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,a.defu)(i,n)}return n}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=n.y,exports.RAZORWIND_INFER_PREPROCESSOR=n.o,exports.THEME_BASENAME_PATTERN=n.b,exports.TOKEN_DIRECTORY_GLOB=n.x,exports.TOKEN_FILE_EXTENSIONS=n.S,exports.TYPE_PATH_HINTS=n.w,exports.WINDIE_PARSERS=n.C,exports.razorwindParsers=n.C,exports.defineConfig=Se,exports.definePlugin=r.definePlugin,exports.generator=Ce,exports.getExtractionHooks=n.s,exports.getRazorwindParserHooks=n.c,exports.getRazorwindPreprocessorHooks=n.l,exports.inferTypeFromPath=n.h,exports.inferValue=n.g,exports.isEmptyTokens=n.t,exports.loadComponents=N,exports.loadIcons=W,exports.loadSchemaMetaFromPackageJson=J,exports.loadTokens=n.n,exports.loadTokensOrThrow=n.r,exports.nestFlatTokens=n._,exports.normalizeRepository=w,exports.normalizeTokenTree=n.v,exports.parseCssCustomProperties=n.m,exports.razorwindInferPreprocessor=n.u,exports.registerRazorwindHooks=n.d,exports.registerRazorwindParsers=n.f,exports.resolveConfig=Q,exports.resolveSchemaMeta=Y,exports.resolveTokensSource=n.i,exports.schemaMetaFromConfig=q,exports.schemaMetaFromPackageJson=K,exports.styleDictionaryLogOptions=n.p,exports.themeKeyFromPath=n.a,exports.uniquePlugins=X,exports.writeGeneratedDocuments=$;
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=$;
package/dist/index.d.cts CHANGED
@@ -1,8 +1,9 @@
1
- import { a as Icons, f as Components, t as Schema } from "./schema-CsbyELyn.cjs";
2
- import "./index-BjSOzDOH.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-25eDAKIq.cjs";
4
- import { t as definePlugin } from "./plugin-m5Bm4WrK.cjs";
5
- 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-Dk-i27fI.cjs";
1
+ import { O as Components, a as Icons, t as Schema } from "./schema-Crr8KMUY.cjs";
2
+ import "./index-DovYOOtL.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-BjuUx31T.cjs";
4
+ import { t as definePlugin } from "./plugin-DMOM9PDs.cjs";
5
+ 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-DNAWtBG8.cjs";
6
+ 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-DXx1b3vZ.cjs";
6
7
  import StyleDictionary from "style-dictionary";
7
8
  import { ExecutionContext, GeneratedDocument, GeneratorConfig } from "@power-plant/core";
8
9
  //#region src/lib/resolve-config.d.ts
@@ -142,5 +143,5 @@ declare module "@power-plant/core" {
142
143
  */
143
144
  declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
144
145
  //#endregion
145
- export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, type Generator, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, type Options, type Plugin, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type ResolveTokensPathOptions, type ResolvedTokensSource, 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, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, defineConfig, definePlugin, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyTokens, loadComponents, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveConfig, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, uniquePlugins, writeGeneratedDocuments };
146
+ export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, 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, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyFonts, isEmptyTokens, loadComponents, loadFonts, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, mergeFonts, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, parseCssFonts, parseFontFilename, pickFontByRole, prependFontCss, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, resolveConfig, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, toGoogleFontsCssUrl, uniquePlugins, writeGeneratedDocuments };
146
147
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../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/write-documents.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;iBA6CgB,cAAc,SAAS,WAAW;;;;;;;;iBAuB5B,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBCpBK,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;;;;;;;;;;;;;iBCqalC,eACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;iBCjGW,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;;;;;;;;;;;;;iBCJP,wBACpB,WAAW,eAAe,gCAC1B,cACC;;;KCdS,UAAU,oCAAoC,gBACxD,QACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;YCKU;IACR,IAAI;;;;;;;;;cAcK,uCAAS,sBAAA,QAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../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/write-documents.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;;iBAwCgB,cAAc,SAAS,WAAW;;;;;;;;iBAwB5B,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBChBK,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;;;;;;;;;;;;;iBCqalC,eACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;iBCjGW,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;;;;;;;;;;;;;iBCJP,wBACpB,WAAW,eAAe,gCAC1B,cACC;;;KCdS,UAAU,oCAAoC,gBACxD,QACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;YCMU;IACR,IAAI;;;;;;;;;cAcK,uCAAS,sBAAA,QAAA"}