@razorwind/core 0.0.45 → 0.0.46

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.
@@ -110,6 +110,7 @@ interface LoadTokensOptions extends ResolveTokensPathOptions {
110
110
  splitThemes?: boolean;
111
111
  }
112
112
  type LoadedTokens = Tokens | Record<string, Tokens>;
113
+ declare function isEmptyTokens(tokens: unknown): boolean;
113
114
  /**
114
115
  * Load design tokens via Style Dictionary parser hooks.
115
116
  *
@@ -198,5 +199,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
198
199
  */
199
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
200
201
  //#endregion
201
- export { TOKEN_PARSER_NAMES as A, normalizeTokenTree as C, THEME_BASENAME_PATTERN as D, RazorwindParserName as E, TOKEN_DIRECTORY_GLOB as O, nestFlatTokens as S, DEFAULT_TOKEN_PATH_CANDIDATES as T, resolveTokensSource as _, getRazorwindParserHooks as a, inferTypeFromPath as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolvedTokensSource as g, ResolveTokensPathOptions as h, getExtractionHooks as i, TYPE_PATH_HINTS as j, TOKEN_FILE_EXTENSIONS as k, registerRazorwindParsers as l, loadTokensOrThrow as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, loadTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, themeKeyFromPath as v, parseCssCustomProperties as w, inferValue as x, InferredTokenType as y };
202
- //# sourceMappingURL=index-D6-DvdGv.d.mts.map
202
+ export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_PATH_HINTS as M, THEME_BASENAME_PATTERN as O, inferValue as S, parseCssCustomProperties as T, ResolvedTokensSource as _, getRazorwindParserHooks as a, InferredTokenType as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolveTokensPathOptions as g, loadTokensOrThrow as h, getExtractionHooks as i, TOKEN_PARSER_NAMES as j, TOKEN_DIRECTORY_GLOB as k, registerRazorwindParsers as l, loadTokens as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, isEmptyTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, resolveTokensSource as v, normalizeTokenTree as w, inferTypeFromPath as x, themeKeyFromPath as y };
203
+ //# sourceMappingURL=index-D1ayVOTE.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-D6-DvdGv.d.mts","names":[],"sources":["../src/lib/tokens/constants.ts","../src/lib/tokens/css.ts","../src/lib/tokens/infer.ts","../src/lib/tokens/resolve-path.ts","../src/lib/tokens/load.ts","../src/lib/tokens/logging.ts","../src/lib/tokens/parsers.ts"],"mappings":""}
1
+ {"version":3,"file":"index-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":""}
@@ -110,6 +110,7 @@ interface LoadTokensOptions extends ResolveTokensPathOptions {
110
110
  splitThemes?: boolean;
111
111
  }
112
112
  type LoadedTokens = Tokens | Record<string, Tokens>;
113
+ declare function isEmptyTokens(tokens: unknown): boolean;
113
114
  /**
114
115
  * Load design tokens via Style Dictionary parser hooks.
115
116
  *
@@ -198,5 +199,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
198
199
  */
199
200
  declare const registerRazorwindParsers: typeof registerRazorwindHooks;
200
201
  //#endregion
201
- export { TOKEN_PARSER_NAMES as A, normalizeTokenTree as C, THEME_BASENAME_PATTERN as D, RazorwindParserName as E, TOKEN_DIRECTORY_GLOB as O, nestFlatTokens as S, DEFAULT_TOKEN_PATH_CANDIDATES as T, resolveTokensSource as _, getRazorwindParserHooks as a, inferTypeFromPath as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolvedTokensSource as g, ResolveTokensPathOptions as h, getExtractionHooks as i, TYPE_PATH_HINTS as j, TOKEN_FILE_EXTENSIONS as k, registerRazorwindParsers as l, loadTokensOrThrow as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, loadTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, themeKeyFromPath as v, parseCssCustomProperties as w, inferValue as x, InferredTokenType as y };
202
- //# sourceMappingURL=index-lcz6riNX.d.cts.map
202
+ export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_PATH_HINTS as M, THEME_BASENAME_PATTERN as O, inferValue as S, parseCssCustomProperties as T, ResolvedTokensSource as _, getRazorwindParserHooks as a, InferredTokenType as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolveTokensPathOptions as g, loadTokensOrThrow as h, getExtractionHooks as i, TOKEN_PARSER_NAMES as j, TOKEN_DIRECTORY_GLOB as k, registerRazorwindParsers as l, loadTokens as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, isEmptyTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, resolveTokensSource as v, normalizeTokenTree as w, inferTypeFromPath as x, themeKeyFromPath as y };
203
+ //# sourceMappingURL=index-Dk-i27fI.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-lcz6riNX.d.cts","names":[],"sources":["../src/lib/tokens/constants.ts","../src/lib/tokens/css.ts","../src/lib/tokens/infer.ts","../src/lib/tokens/resolve-path.ts","../src/lib/tokens/load.ts","../src/lib/tokens/logging.ts","../src/lib/tokens/parsers.ts"],"mappings":";;;;;;;;cAmBa;KAOD,8BAA8B;;cAG7B;;;;;cAsBA;;cAyBA;;cAGA,wBAAsB;;cAItB,iBAAiB;;;;;;;iBCvDd,yBACd,mBACC;;;KCgCS;;;;iBAmEI,kBACd,iBACC;;;;iBAiBa,WACd,cACA;EACG;EAAgB,OAAO;;;;;iBAsPZ,mBACd,gBACA;;;;;;;;iBA2Cc,eACd,MAAM,0BACL;;;UC9Zc;;;;EAIf;;;;EAKA;;;;EAKA,gBAAgB;;UAGD;;;;;;;EAOf;;;;EAKA;;;;EAKA;;;;;;;;;iBAyHc,oBACd,SAAS,2BACR;;;;iBAqFa,iBAAiB;;;UCrNhB,0BAA0B;;;;;;EAMzC;;KAGU,eAAe,SAAS,eAAe;;;;;;;;;iBA6I7B,WACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;iBAsCW,kBACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;;;iBC5NK,0BAA0B;EACxC,YAAY;;;;;cCGD;;UAGI;EACf,kBAAkB,QAAQ;EAC1B,wBAAwB;IACtB;IACA,cAAc,YAAY;;;;UAKb;EACf,SAAS,YAAY;EACrB,eAAe,YAAY;EAC3B;EACA;;;iBAwEc,2BAA2B,YAAY;;;;;iBAavC,2BACd,YAAY,qBACX;;iBAKa,iCAAiC,YAC/C;;;;;;;iBAac,mBAAmB,UAAS,WAAgB;;;;;;;;;;;;;;iBA0D5C,uBACd,UAAS,UACT,SAAQ,gCACP;;;;cAqBU,iCAAwB"}
1
+ {"version":3,"file":"index-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"}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-93daQRSN.cjs"),n=require("./tokens-DP2GoUvv.cjs"),r=require("./plugin.cjs");let i=require("@power-plant/core"),a=require("@stryke/type-checks/is-empty-object"),o=require("defu"),s=require("@stryke/fs/exists"),c=require("@stryke/fs/is-file"),l=require("@stryke/fs/json"),u=require("@stryke/fs/list-files"),d=require("@stryke/path/append"),f=require("@stryke/path/file-path-fns"),p=require("@stryke/path/join"),m=require("@stryke/string-format/title-case"),h=require("@stryke/type-checks/is-set-object"),g=require("@stryke/type-checks/is-set-string"),_=require("node:fs/promises"),v=require("node:path"),ee=require("@stryke/env/get-env-paths"),y=require("@stryke/path/find"),b=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),x=require("c12"),ne=require("jiti"),S=require("node:fs"),C=require("node:os");C=e.t(C,1);var re=`0.0.45`;function w(e){return!!((0,g.isSetString)(e)||(0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))}function T(e){if((0,g.isSetString)(e))return e;if((0,h.isSetObject)(e)&&`url`in e&&(0,g.isSetString)(e.url))return e.url}const E=t.o.partial(),D=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),O=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function k(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function ie(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function A(e){let t=e.toLowerCase();if(D.has(t))return t}function ae(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&D.has(t))}function j(e){if(!e)return;let n=t.a.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.a.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function M(e){if(!e)return;let n=t.s.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){if((0,g.isSetString)(n)){let e=(0,f.findFileName)(n,{withExtension:!1})||n,i=t.s.safeParse({name:e,path:n});i.success&&r.push(i.data);continue}let e=t.s.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function N(e){if(!(0,h.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=E.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function P(e){return(0,h.isSetObject)(e)&&`path`in e}async function oe(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),(0,h.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,h.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c,u;P(a)?c=j(a):(0,h.isSetObject)(a)&&(o=N(a),`files`in a&&(c=j(a.files)),`usage`in a&&(u=M(a.usage)));let d=O(o??{},r);return c?.length&&(d.files=c),u?.length&&(d.usage=u),Object.keys(d).length>0?d:void 0}async function se(e){let t=(0,p.joinPaths)(e,`component.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(P(n)||Array.isArray(n)){let e=j(n);if(e)return{files:e}}if(!(0,h.isSetObject)(n))return;let r=N(n)??{},i=`files`in n?j(n.files):void 0,a=`usage`in n?M(n.usage):void 0;return i?.length&&(r.files=i),a?.length&&(r.usage=a),Object.keys(r).length>0?r:void 0}async function ce(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ae(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function le(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.language??A(r),a=t.name||(0,f.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,s.existsSync)(n)?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,p.joinPaths)(e,`usage`);if(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n))return;let r=await ce(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,p.joinPaths)(n,e),r=A((0,f.findFileExtensionSafe)(e)??``),i=(0,f.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,m.titleCase)(i),path:t,content:await(0,_.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ue(e,t){let n=t??(await(0,u.listFiles)(e)).filter(e=>(0,f.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,_.readFile)((0,d.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,f.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,_.readFile)((0,d.appendPath)(t.path,e),`utf8`):void 0,path:(0,d.appendPath)(t.path,e)}))}async function de(e){let n=await oe(e),r=await se(e);if(!n&&!r)return;let i=O(r??{},n??{}),a=(0,g.isSetString)(i.name)?i.name:(0,f.findFolderName)(e),o=(0,g.isSetString)(i.title)?i.title:(0,m.titleCase)(a),s=t.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await le(e,s.data.usage);return{...s.data,files:await ue(e,s.data.files),...c?.length?{usage:c}:{}}}async function F(e){let t={},n=ie(e.options.componentsPath);for(let r of n){let n=k(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await de((0,p.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const fe=t.r.partial(),I=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),L=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function pe(e,t){return(0,v.isAbsolute)(t)?t:(0,v.resolve)(e,t)}function me(e){return Array.isArray(e)?e.filter(g.isSetString):(0,g.isSetString)(e)?[e]:[]}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function z(e){let t=(0,f.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&I.has(t))}function he(e){return n.y.test(e)}async function B(e){try{return(await(0,_.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&z(e.name)).map(e=>e.name)}catch{return[]}}function V(e){if(!e)return;let n=t.n.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.n.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function H(e){if(!(0,h.isSetObject)(e))return;let t=fe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function U(e){return(0,h.isSetObject)(e)&&`path`in e}async function W(e,t,n){let r=(0,d.appendPath)(e,t),i=R((0,f.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,_.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function ge(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,g.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,g.isSetString)(n.description)&&(r.description=n.description),(0,g.isSetString)(n.version)&&(r.version=n.version),(0,g.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=T(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(g.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c;U(a)?c=V(a):(0,h.isSetObject)(a)&&(o=H(a),`files`in a&&(c=V(a.files)));let u=L(o??{},r);return c?.length&&(u.files=c),Object.keys(u).length>0?u:void 0}async function _e(e){let t=(0,p.joinPaths)(e,`icon.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(U(n)||Array.isArray(n)){let e=V(n);if(e)return{files:e}}return H(n)}async function ve(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,d.appendPath)(t.path,e),r=(0,f.findFileExtensionSafe)(t.path)??``,i=t.type??R(r)??`file`,a=t.content===void 0?i===`svg`?await(0,_.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await B(e);return Promise.all(n.map(t=>W(t,e)))}async function ye(e){let n=await ge(e),r=await _e(e),i=await B(e);if(!n&&!r&&i.length===0)return;let a=L(r??{},n??{}),o=(0,g.isSetString)(a.name)?a.name:(0,f.findFolderName)(e),s=(0,g.isSetString)(a.title)?a.title:(0,m.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await ve(e,c.data.files)}}function G(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,m.titleCase)(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function be(e,t,n){let r=await B(e);for(let i of r){let r=(0,f.findFileName)(i,{withExtension:!1});r&&G(n,r,await W(i,e,t))}}async function K(e){let t={},n=me(e.options.iconsPath);for(let r of n){let n=pe(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,_.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,p.joinPaths)(n,r.name);if(r.isDirectory()){if(he(r.name)){await be(e,r.name,t);continue}let n=await ye(e);if(n){let e=t[n.name];t[n.name]=e?L(n,e):n}continue}if(r.isFile()&&z(r.name)){let e=(0,f.findFileName)(r.name,{withExtension:!1});if(!e)continue;G(t,e,await W(r.name,n))}}}catch{continue}}return t}function q(e,t){let n=e[t];return(0,g.isSetString)(n)?n:void 0}function J(e){let t={};(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=T(e.repository);n&&(t.repository=n),(0,g.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,h.isSetObject)(r)){let t=r,n=q(t,`title`),a=q(t,`name`),o=q(t,`description`),s=q(t,`homepage`),c=q(t,`logo`),l=T(t.repository);a?i.name=a:(0,g.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,g.isSetString)(i.name)&&(i.title=(0,m.titleCase)(i.name)),o?i.description=o:(0,g.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:w(e.homepage)?i.homepage=T(e.homepage):w(e.author)?i.homepage=T(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&w(e.maintainers[0])?i.homepage=T(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&w(e.contributors[0])?i.homepage=T(e.contributors[0]):w(e.bugs)&&(i.homepage=T(e.bugs)),c&&(i.logo=c),l?i.repository=l:w(e.repository)&&(i.repository=T(e.repository))}return(0,o.defu)(i,t)}function Y(e){let t={};return(0,g.isSetString)(e.name)&&(t.name=e.name),(0,g.isSetString)(e.title)&&(t.title=e.title),(0,g.isSetString)(e.description)&&(t.description=e.description),(0,g.isSetString)(e.repository)&&(t.repository=e.repository),(0,g.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,g.isSetString)(e.logo)&&(t.logo=e.logo),t}async function X(e){let t=(0,p.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return{};let n;try{n=await(0,l.readJsonFile)(t)}catch{return{}}return J(n)}async function Z(e,t){let n=await X(e),r=Y(t);return(0,o.defu)(r,n)}const Q=C.default.homedir();async function $(e,t){let n=t.configFile&&(0,S.existsSync)((0,b.replacePath)(t.configFile,e))?(0,b.replacePath)(t.configFile,e):t.configFile&&(0,S.existsSync)(t.configFile)?t.configFile:(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,p.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.ts`))?(0,p.joinPaths)(e,`razorwind.config.ts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.js`))?(0,p.joinPaths)(e,`razorwind.config.js`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mts`))?(0,p.joinPaths)(e,`razorwind.config.mts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.mjs`))?(0,p.joinPaths)(e,`razorwind.config.mjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cjs`))?(0,p.joinPaths)(e,`razorwind.config.cjs`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.cts`))?(0,p.joinPaths)(e,`razorwind.config.cts`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.json`))?(0,p.joinPaths)(e,`razorwind.config.json`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yaml`))?(0,p.joinPaths)(e,`razorwind.config.yaml`):(0,S.existsSync)((0,p.joinPaths)(e,`razorwind.config.yml`))?(0,p.joinPaths)(e,`razorwind.config.yml`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=(0,ne.createJiti)(e,i),s={};if(n){let r=await a.import(n,{default:!0});if(r){let i={};(0,te.isFunction)(r)?i=await Promise.resolve(r({cwd:e,mode:t.mode??`development`})):((0,h.isSetObject)(r)||Array.isArray(r))&&(i=r),((0,h.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,u]=await Promise.all([(0,x.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,x.loadConfig)({cwd:Q,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,o.defu)({cwd:e,envPaths:{...r,home:Q}},t,s,(0,h.isSetObject)(c?.config)?{...c.config}:{},(0,h.isSetObject)(l?.config)?{...l.config}:{},(0,h.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,p.joinPaths)(e,`assets/icons`),plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=(0,g.isSetString)(d.componentsPath)?(0,y.findFilePath)(d.componentsPath):e;if(Array.isArray(d.iconsPath)){let t=d.iconsPath.filter(g.isSetString).map(e=>(0,y.findFilePath)(e));d.iconsPath=t.length>0?t:(0,p.joinPaths)(e,`assets/icons`)}else d.iconsPath=(0,g.isSetString)(d.iconsPath)?(0,y.findFilePath)(d.iconsPath):(0,p.joinPaths)(e,`assets/icons`);return Array.isArray(d.plugins)||(d.plugins=[]),d}function xe(e){return e}const Se=(0,i.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:re,tags:[`razorwind`,`dtcg`]},schema:(0,i.defineSchema)({schema:t.t}),input:async e=>{let t=(0,i.useExecution)();if(t.options=await $(t.cwd,e),t.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let r=t.options.tokens;(!r||(0,a.isEmptyObject)(r))&&(r=await n.t(t));let s={...await Z(t.cwd,t.options),tokens:r??{},components:(0,o.defu)(t.options.components??{},await F(t)??{}),icons:(0,o.defu)(t.options.icons??{},await K(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))s=await e.extract(s,t.options);if(!s.tokens||(0,a.isEmptyObject)(s.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let e of t.options.plugins.filter(e=>e.validate))await e.validate(s,t.options);return s},generator:async e=>{let t=(0,i.useExecution)(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=(0,o.defu)(i,n)}return n}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=n.v,exports.RAZORWIND_INFER_PREPROCESSOR=n.a,exports.THEME_BASENAME_PATTERN=n.y,exports.TOKEN_DIRECTORY_GLOB=n.b,exports.TOKEN_FILE_EXTENSIONS=n.x,exports.TYPE_PATH_HINTS=n.C,exports.WINDIE_PARSERS=n.S,exports.razorwindParsers=n.S,exports.defineConfig=xe,exports.definePlugin=r.definePlugin,exports.generator=Se,exports.getExtractionHooks=n.o,exports.getRazorwindParserHooks=n.s,exports.getRazorwindPreprocessorHooks=n.c,exports.inferTypeFromPath=n.m,exports.inferValue=n.h,exports.loadComponents=F,exports.loadIcons=K,exports.loadSchemaMetaFromPackageJson=X,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.g,exports.normalizeRepository=T,exports.normalizeTokenTree=n._,exports.parseCssCustomProperties=n.p,exports.razorwindInferPreprocessor=n.l,exports.registerRazorwindHooks=n.u,exports.registerRazorwindParsers=n.d,exports.resolveConfig=$,exports.resolveSchemaMeta=Z,exports.resolveTokensSource=n.r,exports.schemaMetaFromConfig=Y,exports.schemaMetaFromPackageJson=J,exports.styleDictionaryLogOptions=n.f,exports.themeKeyFromPath=n.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-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=$;
package/dist/index.d.cts CHANGED
@@ -2,10 +2,17 @@ import { a as Icons, f as Components, t as Schema } from "./schema-CsbyELyn.cjs"
2
2
  import "./index-BjSOzDOH.cjs";
3
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
4
  import { t as definePlugin } from "./plugin-m5Bm4WrK.cjs";
5
- import { A as TOKEN_PARSER_NAMES, C as normalizeTokenTree, D as THEME_BASENAME_PATTERN, E as RazorwindParserName, O as TOKEN_DIRECTORY_GLOB, S as nestFlatTokens, T as DEFAULT_TOKEN_PATH_CANDIDATES, _ as resolveTokensSource, a as getRazorwindParserHooks, b as inferTypeFromPath, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolvedTokensSource, h as ResolveTokensPathOptions, i as getExtractionHooks, j as TYPE_PATH_HINTS, k as TOKEN_FILE_EXTENSIONS, l as registerRazorwindParsers, m as loadTokensOrThrow, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as loadTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as themeKeyFromPath, w as parseCssCustomProperties, x as inferValue, y as InferredTokenType } from "./index-lcz6riNX.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";
6
6
  import StyleDictionary from "style-dictionary";
7
- import { ExecutionContext, GeneratorConfig } from "@power-plant/core";
7
+ import { ExecutionContext, GeneratedDocument, GeneratorConfig } from "@power-plant/core";
8
8
  //#region src/lib/resolve-config.d.ts
9
+ /**
10
+ * Keep the first plugin for each {@link Plugin.name}.
11
+ *
12
+ * `defu` concatenates plugin arrays when the same config is loaded via jiti
13
+ * and c12, which would otherwise run every generator twice.
14
+ */
15
+ declare function uniquePlugins(plugins: Plugin[]): Plugin[];
9
16
  /**
10
17
  * Loads the user configuration file for the project.
11
18
  *
@@ -96,6 +103,19 @@ declare function resolveSchemaMeta(cwd: string, config: UserConfig): Promise<Sch
96
103
  */
97
104
  declare function normalizeUrl(value: unknown): string | undefined;
98
105
  //#endregion
106
+ //#region src/lib/write-documents.d.ts
107
+ /**
108
+ * Persist generator documents to disk.
109
+ *
110
+ * Power Plant's default `@power-plant/unstorage-output` is not always
111
+ * resolvable from Razorwind, so the generator writes files itself.
112
+ *
113
+ * @param documents - Documents keyed by output path.
114
+ * @param cwd - Directory used to resolve relative document paths.
115
+ * @returns Absolute paths that were written.
116
+ */
117
+ declare function writeGeneratedDocuments(documents: Record<string, GeneratedDocument> | undefined, cwd: string): Promise<string[]>;
118
+ //#endregion
99
119
  //#region src/types/base.d.ts
100
120
  type Generator<TOptions extends object = object> = GeneratorConfig<Schema, TOptions> & {
101
121
  name: string;
@@ -122,5 +142,5 @@ declare module "@power-plant/core" {
122
142
  */
123
143
  declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
124
144
  //#endregion
125
- 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, loadComponents, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveConfig, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath };
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 };
126
146
  //# 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/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;;iBA8CsB,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBCEK,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;;;KCfjB,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":";;;;;;;;;;;;;;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"}
package/dist/index.d.mts CHANGED
@@ -2,10 +2,17 @@ import { a as Icons, f as Components, t as Schema } from "./schema-CsbyELyn.mjs"
2
2
  import "./index-DM8vit-J.mjs";
3
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-rgbP9zhp.mjs";
4
4
  import { t as definePlugin } from "./plugin-CAoFfyMa.mjs";
5
- import { A as TOKEN_PARSER_NAMES, C as normalizeTokenTree, D as THEME_BASENAME_PATTERN, E as RazorwindParserName, O as TOKEN_DIRECTORY_GLOB, S as nestFlatTokens, T as DEFAULT_TOKEN_PATH_CANDIDATES, _ as resolveTokensSource, a as getRazorwindParserHooks, b as inferTypeFromPath, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolvedTokensSource, h as ResolveTokensPathOptions, i as getExtractionHooks, j as TYPE_PATH_HINTS, k as TOKEN_FILE_EXTENSIONS, l as registerRazorwindParsers, m as loadTokensOrThrow, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as loadTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as themeKeyFromPath, w as parseCssCustomProperties, x as inferValue, y as InferredTokenType } from "./index-D6-DvdGv.mjs";
6
- import { ExecutionContext, GeneratorConfig } from "@power-plant/core";
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-D1ayVOTE.mjs";
6
+ import { ExecutionContext, GeneratedDocument, GeneratorConfig } from "@power-plant/core";
7
7
  import StyleDictionary from "style-dictionary";
8
8
  //#region src/lib/resolve-config.d.ts
9
+ /**
10
+ * Keep the first plugin for each {@link Plugin.name}.
11
+ *
12
+ * `defu` concatenates plugin arrays when the same config is loaded via jiti
13
+ * and c12, which would otherwise run every generator twice.
14
+ */
15
+ declare function uniquePlugins(plugins: Plugin[]): Plugin[];
9
16
  /**
10
17
  * Loads the user configuration file for the project.
11
18
  *
@@ -96,6 +103,19 @@ declare function resolveSchemaMeta(cwd: string, config: UserConfig): Promise<Sch
96
103
  */
97
104
  declare function normalizeUrl(value: unknown): string | undefined;
98
105
  //#endregion
106
+ //#region src/lib/write-documents.d.ts
107
+ /**
108
+ * Persist generator documents to disk.
109
+ *
110
+ * Power Plant's default `@power-plant/unstorage-output` is not always
111
+ * resolvable from Razorwind, so the generator writes files itself.
112
+ *
113
+ * @param documents - Documents keyed by output path.
114
+ * @param cwd - Directory used to resolve relative document paths.
115
+ * @returns Absolute paths that were written.
116
+ */
117
+ declare function writeGeneratedDocuments(documents: Record<string, GeneratedDocument> | undefined, cwd: string): Promise<string[]>;
118
+ //#endregion
99
119
  //#region src/types/base.d.ts
100
120
  type Generator<TOptions extends object = object> = GeneratorConfig<Schema, TOptions> & {
101
121
  name: string;
@@ -122,5 +142,5 @@ declare module "@power-plant/core" {
122
142
  */
123
143
  declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
124
144
  //#endregion
125
- 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, loadComponents, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveConfig, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath };
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 };
126
146
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","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/types/base.ts","../src/index.ts"],"mappings":""}
1
+ {"version":3,"file":"index.d.mts","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":""}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,i as n,l as r,r as i,s as a}from"./schema-buR6a6IP.mjs";import{C as o,S as s,_ as c,a as l,b as u,c as ee,d as te,f as ne,g as re,h as ie,i as ae,l as oe,m as se,n as ce,o as le,p as ue,r as de,s as fe,t as d,u as pe,v as me,x as he,y as f}from"./tokens-CXYvywlP.mjs";import{definePlugin as ge}from"./plugin.mjs";import{defineGenerator as _e,defineSchema as ve,useExecution as p}from"@power-plant/core";import{isEmptyObject as ye}from"@stryke/type-checks/is-empty-object";import{createDefu as be,defu as m}from"defu";import{existsSync as h}from"@stryke/fs/exists";import{isDirectory as g}from"@stryke/fs/is-file";import{readJsonFile as _}from"@stryke/fs/json";import{listFiles as xe}from"@stryke/fs/list-files";import{appendPath as v}from"@stryke/path/append";import{findFileExtensionSafe as y,findFileName as b,findFolderName as x}from"@stryke/path/file-path-fns";import{joinPaths as S}from"@stryke/path/join";import{titleCase as C}from"@stryke/string-format/title-case";import{isSetObject as w}from"@stryke/type-checks/is-set-object";import{isSetString as T}from"@stryke/type-checks/is-set-string";import{readFile as E,readdir as D}from"node:fs/promises";import{isAbsolute as O,resolve as k}from"node:path";import{getEnvPaths as Se}from"@stryke/env/get-env-paths";import{findFilePath as A}from"@stryke/path/find";import{replacePath as j}from"@stryke/path/replace";import{isFunction as Ce}from"@stryke/type-checks/is-function";import{loadConfig as M}from"c12";import{createJiti as we}from"jiti";import{existsSync as N}from"node:fs";import Te from"node:os";var Ee=`0.0.45`;function P(e){return!!(T(e)||w(e)&&`url`in e&&T(e.url))}function F(e){if(T(e))return e;if(w(e)&&`url`in e&&T(e.url))return e.url}const De=t.partial(),I=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),L=be((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Oe(e,t){return O(t)?t:k(e,t)}function ke(e){return Array.isArray(e)?e.filter(T):T(e)?[e]:[]}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function Ae(e){let t=y(e)?.toLowerCase();return!!(t&&I.has(t))}function z(e){if(!e)return;let t=a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=a.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function B(e){if(!e)return;let t=r.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(T(t)){let e=b(t,{withExtension:!1})||t,i=r.safeParse({name:e,path:t});i.success&&n.push(i.data);continue}let e=r.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function V(e){if(!w(e))return;let{files:t,usage:n,...r}=e,i=De.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function H(e){return w(e)&&`path`in e}async function je(e){let t=S(e,`package.json`);if(!h(t))return;let n;try{n=await _(t)}catch{return}let r={};T(n.name)&&(r.name=n.name,r.title=n.name),T(n.description)&&(r.description=n.description),T(n.version)&&(r.version=n.version),T(n.homepage)&&(r.homepage=n.homepage);let i=F(n.repository);if(i&&(r.repository=i),w(n.dependencies)&&(r.dependencies=n.dependencies),w(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(T);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;H(a)?s=z(a):w(a)&&(o=V(a),`files`in a&&(s=z(a.files)),`usage`in a&&(c=B(a.usage)));let l=L(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function Me(e){let t=S(e,`component.json`);if(!h(t))return;let n;try{n=await _(t)}catch{return}if(H(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}if(!w(n))return;let r=V(n)??{},i=`files`in n?z(n.files):void 0,a=`usage`in n?B(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 Ne(e){try{return(await D(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&Ae(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function Pe(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=v(t.path,e),r=y(t.path)??``,i=t.language??R(r),a=t.name||b(t.path,{withExtension:!1})||t.path,o=t.content===void 0?h(n)?await E(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=S(e,`usage`);if(!h(n)||!g(n))return;let r=await Ne(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=S(n,e),r=R(y(e)??``),i=b(e,{withExtension:!1})||e;return{name:i,title:C(i),path:t,content:await E(t,`utf8`),...r?{language:r}:{}}}))}async function Fe(e,t){let n=t??(await xe(e)).filter(e=>b(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(y(t))?`component`:`file`,path:t,content:await E(v(t,e),`utf8`)}:{type:/[tj]sx$/.test(y(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await E(v(t.path,e),`utf8`):void 0,path:v(t.path,e)}))}async function Ie(e){let n=await je(e),r=await Me(e);if(!n&&!r)return;let i=L(r??{},n??{}),a=T(i.name)?i.name:x(e),o=T(i.title)?i.title:C(a),s=t.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await Pe(e,s.data.usage);return{...s.data,files:await Fe(e,s.data.files),...c?.length?{usage:c}:{}}}async function U(e){let t={},n=ke(e.options.componentsPath);for(let r of n){let n=Oe(e.cwd,r);if(!(!h(n)||!g(n)))try{let e=await D(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await Ie(S(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Le=e.partial(),W=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),G=be((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Re(e,t){return O(t)?t:k(e,t)}function ze(e){return Array.isArray(e)?e.filter(T):T(e)?[e]:[]}function K(e){let t=e.toLowerCase();if(W.has(t))return t}function q(e){let t=y(e)?.toLowerCase();return!!(t&&W.has(t))}function Be(e){return f.test(e)}async function J(e){try{return(await D(e,{withFileTypes:!0})).filter(e=>e.isFile()&&q(e.name)).map(e=>e.name)}catch{return[]}}function Y(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 X(e){if(!w(e))return;let t=Le.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Ve(e){return w(e)&&`path`in e}async function Z(e,t,n){let r=v(e,t),i=K(y(e)??``)??`file`,a=i===`svg`?await E(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function He(e){let t=S(e,`package.json`);if(!h(t))return;let n;try{n=await _(t)}catch{return}let r={};T(n.name)&&(r.name=n.name,r.title=n.name),T(n.description)&&(r.description=n.description),T(n.version)&&(r.version=n.version),T(n.homepage)&&(r.homepage=n.homepage);let i=F(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(T);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Ve(a)?s=Y(a):w(a)&&(o=X(a),`files`in a&&(s=Y(a.files)));let c=G(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Ue(e){let t=S(e,`icon.json`);if(!h(t))return;let n;try{n=await _(t)}catch{return}if(Ve(n)||Array.isArray(n)){let e=Y(n);if(e)return{files:e}}return X(n)}async function We(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=v(t.path,e),r=y(t.path)??``,i=t.type??K(r)??`file`,a=t.content===void 0?i===`svg`?await E(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await J(e);return Promise.all(n.map(t=>Z(t,e)))}async function Ge(t){let n=await He(t),r=await Ue(t),i=await J(t);if(!n&&!r&&i.length===0)return;let a=G(r??{},n??{}),o=T(a.name)?a.name:x(t),s=T(a.title)?a.title:C(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await We(t,c.data.files)}}function Ke(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:C(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 qe(e,t,n){let r=await J(e);for(let i of r){let r=b(i,{withExtension:!1});r&&Ke(n,r,await Z(i,e,t))}}async function Je(e){let t={},n=ze(e.options.iconsPath);for(let r of n){let n=Re(e.cwd,r);if(!(!h(n)||!g(n)))try{let e=await D(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=S(n,r.name);if(r.isDirectory()){if(Be(r.name)){await qe(e,r.name,t);continue}let n=await Ge(e);if(n){let e=t[n.name];t[n.name]=e?G(n,e):n}continue}if(r.isFile()&&q(r.name)){let e=b(r.name,{withExtension:!1});if(!e)continue;Ke(t,e,await Z(r.name,n))}}}catch{continue}}return t}function Q(e,t){let n=e[t];return T(n)?n:void 0}function Ye(e){let t={};T(e.name)&&(t.name=e.name),T(e.description)&&(t.description=e.description),T(e.homepage)&&(t.homepage=e.homepage);let n=F(e.repository);n&&(t.repository=n),T(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(w(r)){let t=r,n=Q(t,`title`),a=Q(t,`name`),o=Q(t,`description`),s=Q(t,`homepage`),c=Q(t,`logo`),l=F(t.repository);a?i.name=a:T(e.name)&&(i.name=e.name),n?i.title=n:T(i.name)&&(i.title=C(i.name)),o?i.description=o:T(e.description)&&(i.description=e.description),s?i.homepage=s:P(e.homepage)?i.homepage=F(e.homepage):P(e.author)?i.homepage=F(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&P(e.maintainers[0])?i.homepage=F(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&P(e.contributors[0])?i.homepage=F(e.contributors[0]):P(e.bugs)&&(i.homepage=F(e.bugs)),c&&(i.logo=c),l?i.repository=l:P(e.repository)&&(i.repository=F(e.repository))}return m(i,t)}function Xe(e){let t={};return T(e.name)&&(t.name=e.name),T(e.title)&&(t.title=e.title),T(e.description)&&(t.description=e.description),T(e.repository)&&(t.repository=e.repository),T(e.homepage)&&(t.homepage=e.homepage),T(e.logo)&&(t.logo=e.logo),t}async function Ze(e){let t=S(e,`package.json`);if(!h(t))return{};let n;try{n=await _(t)}catch{return{}}return Ye(n)}async function Qe(e,t){let n=await Ze(e),r=Xe(t);return m(r,n)}const $e=Te.homedir();async function $(e,t){let n=t.configFile&&N(j(t.configFile,e))?j(t.configFile,e):t.configFile&&N(t.configFile)?t.configFile:N(S(e,`razorwind.${t.mode}.ts`))?S(e,`razorwind.${t.mode}.ts`):N(S(e,`razorwind.${t.mode}.js`))?S(e,`razorwind.${t.mode}.js`):N(S(e,`razorwind.${t.mode}.mts`))?S(e,`razorwind.${t.mode}.mts`):N(S(e,`razorwind.${t.mode}.mjs`))?S(e,`razorwind.${t.mode}.mjs`):N(S(e,`razorwind.${t.mode}.cjs`))?S(e,`razorwind.${t.mode}.cjs`):N(S(e,`razorwind.${t.mode}.cts`))?S(e,`razorwind.${t.mode}.cts`):N(S(e,`razorwind.${t.mode}.json`))?S(e,`razorwind.${t.mode}.json`):N(S(e,`razorwind.${t.mode}.yaml`))?S(e,`razorwind.${t.mode}.yaml`):N(S(e,`razorwind.${t.mode}.yml`))?S(e,`razorwind.${t.mode}.yml`):N(S(e,`razorwind.config.ts`))?S(e,`razorwind.config.ts`):N(S(e,`razorwind.config.js`))?S(e,`razorwind.config.js`):N(S(e,`razorwind.config.mts`))?S(e,`razorwind.config.mts`):N(S(e,`razorwind.config.mjs`))?S(e,`razorwind.config.mjs`):N(S(e,`razorwind.config.cjs`))?S(e,`razorwind.config.cjs`):N(S(e,`razorwind.config.cts`))?S(e,`razorwind.config.cts`):N(S(e,`razorwind.config.json`))?S(e,`razorwind.config.json`):N(S(e,`razorwind.config.yaml`))?S(e,`razorwind.config.yaml`):N(S(e,`razorwind.config.yml`))?S(e,`razorwind.config.yml`):void 0,r=Se({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=we(e,i),o={};if(n){let r=await a.import(n,{default:!0});if(r){let i={};Ce(r)?i=await Promise.resolve(r({cwd:e,mode:t.mode??`development`})):(w(r)||Array.isArray(r))&&(i=r),(w(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([M({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),M({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),M({cwd:$e,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=m({cwd:e,envPaths:{...r,home:$e}},t,o,w(s?.config)?{...s.config}:{},w(c?.config)?{...c.config}:{},w(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:S(e,`assets/icons`),plugins:[]});if(Array.isArray(u.componentsPath)){let t=u.componentsPath.filter(T).map(e=>A(e));u.componentsPath=t.length>0?t:e}else u.componentsPath=T(u.componentsPath)?A(u.componentsPath):e;if(Array.isArray(u.iconsPath)){let t=u.iconsPath.filter(T).map(e=>A(e));u.iconsPath=t.length>0?t:S(e,`assets/icons`)}else u.iconsPath=T(u.iconsPath)?A(u.iconsPath):S(e,`assets/icons`);return Array.isArray(u.plugins)||(u.plugins=[]),u}function et(e){return e}const tt=_e({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:Ee,tags:[`razorwind`,`dtcg`]},schema:ve({schema:i}),input:async e=>{let t=p();if(t.options=await $(t.cwd,e),t.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let n=t.options.tokens;(!n||ye(n))&&(n=await d(t));let r={...await Qe(t.cwd,t.options),tokens:n??{},components:m(t.options.components??{},await U(t)??{}),icons:m(t.options.icons??{},await Je(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||ye(r.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(r,t.options);return r},generator:async e=>{let t=p(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=m(i,n)}return n}});export{me as DEFAULT_TOKEN_PATH_CANDIDATES,l as RAZORWIND_INFER_PREPROCESSOR,f as THEME_BASENAME_PATTERN,u as TOKEN_DIRECTORY_GLOB,he as TOKEN_FILE_EXTENSIONS,o as TYPE_PATH_HINTS,s as WINDIE_PARSERS,s as razorwindParsers,et as defineConfig,ge as definePlugin,tt as generator,le as getExtractionHooks,fe as getRazorwindParserHooks,ee as getRazorwindPreprocessorHooks,se as inferTypeFromPath,ie as inferValue,U as loadComponents,Je as loadIcons,Ze as loadSchemaMetaFromPackageJson,d as loadTokens,ce as loadTokensOrThrow,re as nestFlatTokens,F as normalizeRepository,c as normalizeTokenTree,ue as parseCssCustomProperties,oe as razorwindInferPreprocessor,pe as registerRazorwindHooks,te as registerRazorwindParsers,$ as resolveConfig,Qe as resolveSchemaMeta,de as resolveTokensSource,Xe as schemaMetaFromConfig,Ye as schemaMetaFromPackageJson,ne as styleDictionaryLogOptions,ae as themeKeyFromPath};
1
+ import{a as e,c as t,i as n,l as r,r as i,s as a}from"./schema-buR6a6IP.mjs";import{C as o,S as s,_ as c,a as l,b as u,c as d,d as f,f as p,g as ee,h as te,i as ne,l as re,m as ie,n as m,o as ae,p as oe,r as se,s as ce,t as h,u as le,v as ue,w as de,x as fe,y as pe}from"./tokens-CFh9AQab.mjs";import{definePlugin as me}from"./plugin.mjs";import{defineGenerator as he,defineSchema as ge,useExecution as g}from"@power-plant/core";import{createDefu as _,defu as v}from"defu";import{existsSync as y}from"@stryke/fs/exists";import{isDirectory as b}from"@stryke/fs/is-file";import{readJsonFile as x}from"@stryke/fs/json";import{listFiles as _e}from"@stryke/fs/list-files";import{appendPath as S}from"@stryke/path/append";import{findFileExtensionSafe as C,findFileName as w,findFolderName as ve}from"@stryke/path/file-path-fns";import{joinPaths as T}from"@stryke/path/join";import{titleCase as E}from"@stryke/string-format/title-case";import{isSetObject as D}from"@stryke/type-checks/is-set-object";import{isSetString as O}from"@stryke/type-checks/is-set-string";import{mkdir as ye,readFile as k,readdir as A,writeFile as be}from"node:fs/promises";import{dirname as xe,isAbsolute as j,resolve as M}from"node:path";import{getEnvPaths as Se}from"@stryke/env/get-env-paths";import{findFilePath as N}from"@stryke/path/find";import{replacePath as P}from"@stryke/path/replace";import{isFunction as Ce}from"@stryke/type-checks/is-function";import{loadConfig as F}from"c12";import{createJiti as we}from"jiti";import{existsSync as I}from"node:fs";import Te from"node:os";var Ee=`0.0.46`;function L(e){return!!(O(e)||D(e)&&`url`in e&&O(e.url))}function R(e){if(O(e))return e;if(D(e)&&`url`in e&&O(e.url))return e.url}const De=t.partial(),Oe=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),ke=_((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Ae(e,t){return j(t)?t:M(e,t)}function je(e){return Array.isArray(e)?e.filter(O):O(e)?[e]:[]}function Me(e){let t=e.toLowerCase();if(Oe.has(t))return t}function Ne(e){let t=C(e)?.toLowerCase();return!!(t&&Oe.has(t))}function z(e){if(!e)return;let t=a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=a.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function B(e){if(!e)return;let t=r.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(O(t)){let e=w(t,{withExtension:!1})||t,i=r.safeParse({name:e,path:t});i.success&&n.push(i.data);continue}let e=r.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function V(e){if(!D(e))return;let{files:t,usage:n,...r}=e,i=De.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function H(e){return D(e)&&`path`in e}async function Pe(e){let t=T(e,`package.json`);if(!y(t))return;let n;try{n=await x(t)}catch{return}let r={};O(n.name)&&(r.name=n.name,r.title=n.name),O(n.description)&&(r.description=n.description),O(n.version)&&(r.version=n.version),O(n.homepage)&&(r.homepage=n.homepage);let i=R(n.repository);if(i&&(r.repository=i),D(n.dependencies)&&(r.dependencies=n.dependencies),D(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(O);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;H(a)?s=z(a):D(a)&&(o=V(a),`files`in a&&(s=z(a.files)),`usage`in a&&(c=B(a.usage)));let l=ke(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function Fe(e){let t=T(e,`component.json`);if(!y(t))return;let n;try{n=await x(t)}catch{return}if(H(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}if(!D(n))return;let r=V(n)??{},i=`files`in n?z(n.files):void 0,a=`usage`in n?B(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 Ie(e){try{return(await A(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&Ne(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function Le(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=S(t.path,e),r=C(t.path)??``,i=t.language??Me(r),a=t.name||w(t.path,{withExtension:!1})||t.path,o=t.content===void 0?y(n)?await k(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=T(e,`usage`);if(!y(n)||!b(n))return;let r=await Ie(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=T(n,e),r=Me(C(e)??``),i=w(e,{withExtension:!1})||e;return{name:i,title:E(i),path:t,content:await k(t,`utf8`),...r?{language:r}:{}}}))}async function Re(e,t){let n=t??(await _e(e)).filter(e=>w(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(C(t))?`component`:`file`,path:t,content:await k(S(t,e),`utf8`)}:{type:/[tj]sx$/.test(C(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await k(S(t.path,e),`utf8`):void 0,path:S(t.path,e)}))}async function ze(e){let n=await Pe(e),r=await Fe(e);if(!n&&!r)return;let i=ke(r??{},n??{}),a=O(i.name)?i.name:ve(e),o=O(i.title)?i.title:E(a),s=t.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await Le(e,s.data.usage);return{...s.data,files:await Re(e,s.data.files),...c?.length?{usage:c}:{}}}async function U(e){let t={},n=je(e.options.componentsPath);for(let r of n){let n=Ae(e.cwd,r);if(!(!y(n)||!b(n)))try{let e=await A(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await ze(T(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Be=e.partial(),W=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),G=_((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Ve(e,t){return j(t)?t:M(e,t)}function He(e){return Array.isArray(e)?e.filter(O):O(e)?[e]:[]}function K(e){let t=e.toLowerCase();if(W.has(t))return t}function q(e){let t=C(e)?.toLowerCase();return!!(t&&W.has(t))}function Ue(e){return u.test(e)}async function J(e){try{return(await A(e,{withFileTypes:!0})).filter(e=>e.isFile()&&q(e.name)).map(e=>e.name)}catch{return[]}}function Y(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 X(e){if(!D(e))return;let t=Be.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function We(e){return D(e)&&`path`in e}async function Z(e,t,n){let r=S(e,t),i=K(C(e)??``)??`file`,a=i===`svg`?await k(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Ge(e){let t=T(e,`package.json`);if(!y(t))return;let n;try{n=await x(t)}catch{return}let r={};O(n.name)&&(r.name=n.name,r.title=n.name),O(n.description)&&(r.description=n.description),O(n.version)&&(r.version=n.version),O(n.homepage)&&(r.homepage=n.homepage);let i=R(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(O);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;We(a)?s=Y(a):D(a)&&(o=X(a),`files`in a&&(s=Y(a.files)));let c=G(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Ke(e){let t=T(e,`icon.json`);if(!y(t))return;let n;try{n=await x(t)}catch{return}if(We(n)||Array.isArray(n)){let e=Y(n);if(e)return{files:e}}return X(n)}async function qe(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=S(t.path,e),r=C(t.path)??``,i=t.type??K(r)??`file`,a=t.content===void 0?i===`svg`?await k(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await J(e);return Promise.all(n.map(t=>Z(t,e)))}async function Je(t){let n=await Ge(t),r=await Ke(t),i=await J(t);if(!n&&!r&&i.length===0)return;let a=G(r??{},n??{}),o=O(a.name)?a.name:ve(t),s=O(a.title)?a.title:E(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await qe(t,c.data.files)}}function Ye(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:E(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 J(e);for(let i of r){let r=w(i,{withExtension:!1});r&&Ye(n,r,await Z(i,e,t))}}async function Ze(e){let t={},n=He(e.options.iconsPath);for(let r of n){let n=Ve(e.cwd,r);if(!(!y(n)||!b(n)))try{let e=await A(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=T(n,r.name);if(r.isDirectory()){if(Ue(r.name)){await Xe(e,r.name,t);continue}let n=await Je(e);if(n){let e=t[n.name];t[n.name]=e?G(n,e):n}continue}if(r.isFile()&&q(r.name)){let e=w(r.name,{withExtension:!1});if(!e)continue;Ye(t,e,await Z(r.name,n))}}}catch{continue}}return t}function Q(e,t){let n=e[t];return O(n)?n:void 0}function Qe(e){let t={};O(e.name)&&(t.name=e.name),O(e.description)&&(t.description=e.description),O(e.homepage)&&(t.homepage=e.homepage);let n=R(e.repository);n&&(t.repository=n),O(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(D(r)){let t=r,n=Q(t,`title`),a=Q(t,`name`),o=Q(t,`description`),s=Q(t,`homepage`),c=Q(t,`logo`),l=R(t.repository);a?i.name=a:O(e.name)&&(i.name=e.name),n?i.title=n:O(i.name)&&(i.title=E(i.name)),o?i.description=o:O(e.description)&&(i.description=e.description),s?i.homepage=s:L(e.homepage)?i.homepage=R(e.homepage):L(e.author)?i.homepage=R(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&L(e.maintainers[0])?i.homepage=R(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&L(e.contributors[0])?i.homepage=R(e.contributors[0]):L(e.bugs)&&(i.homepage=R(e.bugs)),c&&(i.logo=c),l?i.repository=l:L(e.repository)&&(i.repository=R(e.repository))}return v(i,t)}function $(e){let t={};return O(e.name)&&(t.name=e.name),O(e.title)&&(t.title=e.title),O(e.description)&&(t.description=e.description),O(e.repository)&&(t.repository=e.repository),O(e.homepage)&&(t.homepage=e.homepage),O(e.logo)&&(t.logo=e.logo),t}async function $e(e){let t=T(e,`package.json`);if(!y(t))return{};let n;try{n=await x(t)}catch{return{}}return Qe(n)}async function et(e,t){let n=await $e(e),r=$(t);return v(r,n)}function tt(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const nt=Te.homedir();async function rt(e,t){let n=t.configFile&&I(P(t.configFile,e))?P(t.configFile,e):t.configFile&&I(t.configFile)?t.configFile:I(T(e,`razorwind.${t.mode}.ts`))?T(e,`razorwind.${t.mode}.ts`):I(T(e,`razorwind.${t.mode}.js`))?T(e,`razorwind.${t.mode}.js`):I(T(e,`razorwind.${t.mode}.mts`))?T(e,`razorwind.${t.mode}.mts`):I(T(e,`razorwind.${t.mode}.mjs`))?T(e,`razorwind.${t.mode}.mjs`):I(T(e,`razorwind.${t.mode}.cjs`))?T(e,`razorwind.${t.mode}.cjs`):I(T(e,`razorwind.${t.mode}.cts`))?T(e,`razorwind.${t.mode}.cts`):I(T(e,`razorwind.${t.mode}.json`))?T(e,`razorwind.${t.mode}.json`):I(T(e,`razorwind.${t.mode}.yaml`))?T(e,`razorwind.${t.mode}.yaml`):I(T(e,`razorwind.${t.mode}.yml`))?T(e,`razorwind.${t.mode}.yml`):I(T(e,`razorwind.config.ts`))?T(e,`razorwind.config.ts`):I(T(e,`razorwind.config.js`))?T(e,`razorwind.config.js`):I(T(e,`razorwind.config.mts`))?T(e,`razorwind.config.mts`):I(T(e,`razorwind.config.mjs`))?T(e,`razorwind.config.mjs`):I(T(e,`razorwind.config.cjs`))?T(e,`razorwind.config.cjs`):I(T(e,`razorwind.config.cts`))?T(e,`razorwind.config.cts`):I(T(e,`razorwind.config.json`))?T(e,`razorwind.config.json`):I(T(e,`razorwind.config.yaml`))?T(e,`razorwind.config.yaml`):I(T(e,`razorwind.config.yml`))?T(e,`razorwind.config.yml`):void 0,r=Se({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=we(e,i),o={};if(n){let r=j(n)?n:M(e,n),i=await a.import(r,{default:!0});if(i){let r={};Ce(i)?r=await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):(D(i)||Array.isArray(i))&&(r=i),(D(r)||Array.isArray(r))&&(o={...r,configFile:n})}}let[s,c,l]=await Promise.all([F({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),F({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),F({cwd:nt,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=D(s?.config)?{...s.config}:{},d=n?j(n)?n:M(e,n):void 0,f=typeof s?.configFile==`string`?s.configFile:void 0;d&&f&&M(e,f)===d&&delete u.plugins;let p=v({cwd:e,envPaths:{...r,home:nt}},t,o,u,D(c?.config)?{...c.config}:{},D(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:T(e,`assets/icons`),plugins:[]});if(Array.isArray(p.componentsPath)){let t=p.componentsPath.filter(O).map(e=>N(e));p.componentsPath=t.length>0?t:e}else p.componentsPath=O(p.componentsPath)?N(p.componentsPath):e;if(Array.isArray(p.iconsPath)){let t=p.iconsPath.filter(O).map(e=>N(e));p.iconsPath=t.length>0?t:T(e,`assets/icons`)}else p.iconsPath=O(p.iconsPath)?N(p.iconsPath):T(e,`assets/icons`);return p.plugins=tt(Array.isArray(p.plugins)?p.plugins:[]),p}async function it(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=j(e)?e:M(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await ye(xe(a),{recursive:!0}),await be(a,o,`utf8`),n.push(a)}return n}function at(e){return e}const ot=he({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:Ee,tags:[`razorwind`,`dtcg`]},schema:ge({schema:i}),input:async e=>{let t=g();if(t.options=await rt(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 n=t.options.tokens;(!n||h(n))&&(n=await m(t));let r={...await et(t.cwd,t.options),tokens:n??{},components:v(t.options.components??{},await U(t)??{}),icons:v(t.options.icons??{},await Ze(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||h(r.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(r,t.options);return r},output:async(e,t,n)=>{await it(n,g().cwd)},generator:async e=>{let t=g(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=v(i,n)}return n}});export{pe as DEFAULT_TOKEN_PATH_CANDIDATES,ae as RAZORWIND_INFER_PREPROCESSOR,u as THEME_BASENAME_PATTERN,fe as TOKEN_DIRECTORY_GLOB,s as TOKEN_FILE_EXTENSIONS,de as TYPE_PATH_HINTS,o as WINDIE_PARSERS,o as razorwindParsers,at as defineConfig,me as definePlugin,ot as generator,ce as getExtractionHooks,d as getRazorwindParserHooks,re as getRazorwindPreprocessorHooks,te as inferTypeFromPath,ee as inferValue,h as isEmptyTokens,U as loadComponents,Ze as loadIcons,$e as loadSchemaMetaFromPackageJson,m as loadTokens,se as loadTokensOrThrow,c as nestFlatTokens,R as normalizeRepository,ue as normalizeTokenTree,ie as parseCssCustomProperties,le as razorwindInferPreprocessor,f as registerRazorwindHooks,p as registerRazorwindParsers,rt as resolveConfig,et as resolveSchemaMeta,ne as resolveTokensSource,$ as schemaMetaFromConfig,Qe as schemaMetaFromPackageJson,oe as styleDictionaryLogOptions,l as themeKeyFromPath,tt as uniquePlugins,it as writeGeneratedDocuments};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../tokens-DP2GoUvv.cjs");exports.DEFAULT_TOKEN_PATH_CANDIDATES=e.v,exports.RAZORWIND_INFER_PREPROCESSOR=e.a,exports.THEME_BASENAME_PATTERN=e.y,exports.TOKEN_DIRECTORY_GLOB=e.b,exports.TOKEN_FILE_EXTENSIONS=e.x,exports.TYPE_PATH_HINTS=e.C,exports.WINDIE_PARSERS=e.S,exports.razorwindParsers=e.S,exports.getExtractionHooks=e.o,exports.getRazorwindParserHooks=e.s,exports.getRazorwindPreprocessorHooks=e.c,exports.inferTypeFromPath=e.m,exports.inferValue=e.h,exports.loadTokens=e.t,exports.loadTokensOrThrow=e.n,exports.nestFlatTokens=e.g,exports.normalizeTokenTree=e._,exports.parseCssCustomProperties=e.p,exports.razorwindInferPreprocessor=e.l,exports.registerRazorwindHooks=e.u,exports.registerRazorwindParsers=e.d,exports.resolveTokensSource=e.r,exports.styleDictionaryLogOptions=e.f,exports.themeKeyFromPath=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../tokens-pHmukPOW.cjs");exports.DEFAULT_TOKEN_PATH_CANDIDATES=e.y,exports.RAZORWIND_INFER_PREPROCESSOR=e.o,exports.THEME_BASENAME_PATTERN=e.b,exports.TOKEN_DIRECTORY_GLOB=e.x,exports.TOKEN_FILE_EXTENSIONS=e.S,exports.TYPE_PATH_HINTS=e.w,exports.WINDIE_PARSERS=e.C,exports.razorwindParsers=e.C,exports.getExtractionHooks=e.s,exports.getRazorwindParserHooks=e.c,exports.getRazorwindPreprocessorHooks=e.l,exports.inferTypeFromPath=e.h,exports.inferValue=e.g,exports.isEmptyTokens=e.t,exports.loadTokens=e.n,exports.loadTokensOrThrow=e.r,exports.nestFlatTokens=e._,exports.normalizeTokenTree=e.v,exports.parseCssCustomProperties=e.m,exports.razorwindInferPreprocessor=e.u,exports.registerRazorwindHooks=e.d,exports.registerRazorwindParsers=e.f,exports.resolveTokensSource=e.i,exports.styleDictionaryLogOptions=e.p,exports.themeKeyFromPath=e.a;
@@ -1,2 +1,2 @@
1
- import { A as TOKEN_PARSER_NAMES, C as normalizeTokenTree, D as THEME_BASENAME_PATTERN, E as RazorwindParserName, O as TOKEN_DIRECTORY_GLOB, S as nestFlatTokens, T as DEFAULT_TOKEN_PATH_CANDIDATES, _ as resolveTokensSource, a as getRazorwindParserHooks, b as inferTypeFromPath, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolvedTokensSource, h as ResolveTokensPathOptions, i as getExtractionHooks, j as TYPE_PATH_HINTS, k as TOKEN_FILE_EXTENSIONS, l as registerRazorwindParsers, m as loadTokensOrThrow, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as loadTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as themeKeyFromPath, w as parseCssCustomProperties, x as inferValue, y as InferredTokenType } from "../../index-lcz6riNX.cjs";
2
- export { DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type ResolveTokensPathOptions, type ResolvedTokensSource, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveTokensSource, styleDictionaryLogOptions, themeKeyFromPath };
1
+ 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";
2
+ export { DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type ResolveTokensPathOptions, type ResolvedTokensSource, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyTokens, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveTokensSource, styleDictionaryLogOptions, themeKeyFromPath };
@@ -1,2 +1,2 @@
1
- import { A as TOKEN_PARSER_NAMES, C as normalizeTokenTree, D as THEME_BASENAME_PATTERN, E as RazorwindParserName, O as TOKEN_DIRECTORY_GLOB, S as nestFlatTokens, T as DEFAULT_TOKEN_PATH_CANDIDATES, _ as resolveTokensSource, a as getRazorwindParserHooks, b as inferTypeFromPath, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolvedTokensSource, h as ResolveTokensPathOptions, i as getExtractionHooks, j as TYPE_PATH_HINTS, k as TOKEN_FILE_EXTENSIONS, l as registerRazorwindParsers, m as loadTokensOrThrow, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as loadTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as themeKeyFromPath, w as parseCssCustomProperties, x as inferValue, y as InferredTokenType } from "../../index-D6-DvdGv.mjs";
2
- export { DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type ResolveTokensPathOptions, type ResolvedTokensSource, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveTokensSource, styleDictionaryLogOptions, themeKeyFromPath };
1
+ 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-D1ayVOTE.mjs";
2
+ export { DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type ResolveTokensPathOptions, type ResolvedTokensSource, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyTokens, loadTokens, loadTokensOrThrow, nestFlatTokens, normalizeTokenTree, parseCssCustomProperties, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, resolveTokensSource, styleDictionaryLogOptions, themeKeyFromPath };
@@ -1 +1 @@
1
- import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x,y as S}from"../../tokens-CXYvywlP.mjs";export{b as DEFAULT_TOKEN_PATH_CANDIDATES,r as RAZORWIND_INFER_PREPROCESSOR,S as THEME_BASENAME_PATTERN,i as TOKEN_DIRECTORY_GLOB,x as TOKEN_FILE_EXTENSIONS,e as TYPE_PATH_HINTS,t as WINDIE_PARSERS,t as razorwindParsers,m as getExtractionHooks,_ as getRazorwindParserHooks,a as getRazorwindPreprocessorHooks,f as inferTypeFromPath,l as inferValue,v as loadTokens,p as loadTokensOrThrow,c as nestFlatTokens,n as normalizeTokenTree,h as parseCssCustomProperties,d as razorwindInferPreprocessor,y as registerRazorwindHooks,o as registerRazorwindParsers,g as resolveTokensSource,s as styleDictionaryLogOptions,u as themeKeyFromPath};
1
+ import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,w as x,x as S,y as C}from"../../tokens-CFh9AQab.mjs";export{C as DEFAULT_TOKEN_PATH_CANDIDATES,m as RAZORWIND_INFER_PREPROCESSOR,i as THEME_BASENAME_PATTERN,S as TOKEN_DIRECTORY_GLOB,t as TOKEN_FILE_EXTENSIONS,x as TYPE_PATH_HINTS,e as WINDIE_PARSERS,e as razorwindParsers,_ as getExtractionHooks,a as getRazorwindParserHooks,d as getRazorwindPreprocessorHooks,l as inferTypeFromPath,c as inferValue,v as isEmptyTokens,p as loadTokens,g as loadTokensOrThrow,n as nestFlatTokens,b as normalizeTokenTree,f as parseCssCustomProperties,y as razorwindInferPreprocessor,o as registerRazorwindHooks,s as registerRazorwindParsers,u as resolveTokensSource,h as styleDictionaryLogOptions,r as themeKeyFromPath};
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./utils-B5uabOd5.mjs";import{existsSync as t}from"@stryke/fs/exists";import{isDirectory as n}from"@stryke/fs/is-file";import{joinPaths as r}from"@stryke/path/join";import{isSetString as i}from"@stryke/type-checks/is-set-string";import{basename as a,isAbsolute as o,resolve as s}from"node:path";import{isFunction as c}from"@stryke/type-checks/is-function";import{importModule as l}from"@stryke/fs/resolve";import u from"fast-glob";import d from"style-dictionary";import{logVerbosityLevels as ee}from"style-dictionary/enums";import te from"json5";import{parse as ne}from"smol-toml";import{parse as re}from"yaml";const f=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],p=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],m=p.join(`,`),h=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],g=`**/*.{${m}}`,_=/^(light|dark|dim|dimmed|high-contrast|hc|protanopia|deuteranopia|tritanopia|achromatopsia|achromatomaly|monochrome|monochromatic|grayscale|greyscale|bw|black-and-white|black-white|blackWhite|default|base|theme)([._-].+)?$/i,v={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},y=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ie=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,ae=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,oe=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,se=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,ce=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,le=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,ue=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,de=/^\{[^{}]+\}$/,fe={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},b=new Set([`px`,`rem`]);function x(e){return Math.min(1,Math.max(0,e))}function S(e,t=100){let n=e.trim();if(n.endsWith(`%`))return x(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return x(r>1?r/255:r)}function C(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function pe(e){let t=C(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function me(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function w(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function T(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=v[n];if(r)return r}}function E(t,n=[]){let r=T(n);if(typeof t==`string`){let e=t.trim();if(de.test(e))return{value:e,type:r};let i=e.match(ue);if(i?.[1])return{value:me(i[1]),type:r};if(y.test(e))return{value:pe(e),type:`color`};let a=e.match(ie);if(a){let e=[S(a[1]),S(a[2]),S(a[3])],t=a[4]?a[4].endsWith(`%`)?x(Number.parseFloat(a[4])/100):x(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=e.match(ae);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?x(Number.parseFloat(o[4])/100):x(Number.parseFloat(o[4]))}:{}},type:`color`};let s=e.match(oe);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?x(Number.parseFloat(s[4])/100):x(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=e.match(se);if(c){let t=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return b.has(t)?{value:{value:n,unit:t},type:`dimension`}:{value:e,type:r===`dimension`?void 0:r}}let l=e.match(ce);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=e.match(le);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=fe[e.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?e.includes(`,`)?{value:e.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:e.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!e.startsWith(`{`)?{value:e,type:void 0}:{value:e,type:r}:{value:d,type:`fontWeight`}}if(typeof t==`number`)return r===`fontWeight`?{value:t,type:`fontWeight`}:r===`duration`?{value:{value:t,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:t,unit:`px`},type:`dimension`}:{value:t,type:r??`number`};if(Array.isArray(t))return t.length===4&&t.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:t,type:`cubicBezier`}:t.every(e=>typeof e==`string`)?{value:t,type:r??`fontFamily`}:{value:t,type:r};if(e(t)){if(`colorSpace`in t&&`components`in t)return{value:t,type:`color`};if(`value`in t&&`unit`in t){let e=String(t.unit).toLowerCase();return e===`ms`||e===`s`?{value:t,type:`duration`}:b.has(e)?{value:t,type:`dimension`}:{value:t,type:r}}}return{value:t,type:r}}function he(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=E(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function D(t,n=[]){if(Array.isArray(t))return t.map((e,t)=>D(e,[...n,String(t)]));if(!e(t))return t;if(w(t))return he(t,n);let r={};for(let[e,i]of Object.entries(t)){if(e.startsWith(`$`)){r[e]=i;continue}r[e]=D(i,[...n,e])}if(!(`$type`in r)){let e=T(n);e&&n.length>0&&(r.$type=e)}return r}function O(t){let n={};for(let[r,i]of Object.entries(t)){let t=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(t.length===0)continue;let a=n;for(let n=0;n<t.length-1;n++){let r=t[n],i=a[r];e(i)?w(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=t.at(-1),s=E(i,t),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];e(l)&&!w(l)?l.DEFAULT=c:a[o]=c}return D(n)}const ge=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function k(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(ge)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return O(t)}function A(e){return e?{verbosity:ee.verbose}:{}}const j=`razorwind-infer`;function M(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return D(e)}function N(e){try{return M(te.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function P(e){try{return M(re(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function F(e){try{return M(ne(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const I=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>N(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>P(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>F(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>D(k(e))}];function L(){return Object.fromEntries(I.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function R(e){return D(e)}function z(){return{[j]:R}}function B(e=[]){let t={...L()},n={...z()},r=[...f],i=[j],a=0,o=0;for(let s of e){for(let e of s.parsers??[]){let n=e.name??`${s.name}-parser-${a}`;t[n]={pattern:e.pattern,parser:({contents:t})=>e.parser(t)},r.push(n),a++}for(let e of s.preprocessors??[]){let t=c(e)?{name:`${s.name}-preprocessor-${o}`,preprocessor:e}:{name:e.name??`${s.name}-preprocessor-${o}`,preprocessor:e.preprocessor};n[t.name]=t.preprocessor,i.push(t.name),o++}}return{parsers:t,preprocessors:n,parserNames:r,preprocessorNames:i}}function V(e=[],t=d){let n=B(e);if(typeof t.registerParser==`function`)for(let[e,r]of Object.entries(n.parsers))t.registerParser({name:e,...r});if(typeof t.registerPreprocessor==`function`)for(let[e,r]of Object.entries(n.preprocessors))t.registerPreprocessor({name:e,preprocessor:r});return n}const _e=V;function H(e,t){return o(t)?t:s(e,t)}function U(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function W(e){return p.includes(U(e))}function G(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function K(e){return r(e,g)}function ve(e){return Array.isArray(e)?e.filter(i):i(e)?[e]:[]}const ye=/[*?[\]{}]/;function be(e){return ye.test(e)}function xe(e){let t=e.search(/[*?[{]/);if(t<=0)return;let n=e.slice(0,t).replace(/[/\\]+$/,``);return n.length>0?n:void 0}function Se(e,r){let i=H(e,r);if(be(r)){let e=xe(i);if(e&&!t(e))throw Error(`tokensPath "${r}" does not exist (resolved: ${i}).`);return{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}if(!t(i))throw Error(`tokensPath "${r}" does not exist (resolved: ${i}).`);return n(i)?{resolvedPath:i,source:[K(i)],isStyleDictionaryConfig:!1}:G(i)?{resolvedPath:i,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}function q(e){let{cwd:r,tokensPath:i,fallbackPaths:a=[]}=e,o=ve(i);if(o.length>0){let e=o.map(e=>Se(r,e)),t=e.filter(e=>e.isStyleDictionaryConfig);if(t.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:t[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of h){let i=H(r,e);if(t(i)){if(n(i))return{resolvedPath:i,source:[K(i)],origin:`default`};if(G(i))return{resolvedPath:i,source:[],origin:`default`};if(W(i))return{resolvedPath:i,source:[i],origin:`default`}}}for(let e of a){if(!e)continue;let i=H(r,e);if(!(!t(i)||n(i))&&(W(i)||U(i)===`css`))return{resolvedPath:i,source:[i],origin:`fallback`}}return{source:[],origin:`none`}}function J(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(_)?.[1]?.toLowerCase()}function Ce(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),typeof t==`function`)return t;if(typeof t==`object`&&`default`in t){t=t.default;continue}break}throw TypeError(`style-dictionary did not export a constructable StyleDictionary class.`)}const we=Ce(d);function Y(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function X(e){let t=await l(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Z(e,t){let n=B(e.plugins),r=new we({...t,parsers:[...n.parserNames,...t.parsers??[]],preprocessors:[...n.preprocessorNames,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...n.parsers,...t.hooks?.parsers},preprocessors:{...n.preprocessors,...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}},A(e.verbose));return await r.hasInitialized,r}async function Q(e,t){return t.length===0?{}:(await Z(e,{source:t})).tokens}async function Te(e){return(await u(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Ee(e,t){let n=await Te(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=J(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return Q(e,t);let a={};if(i.length>0){let t=await Q(e,i);Y(t)||(a.base=t)}for(let[t,n]of r)a[t]=await Q(e,n);return a}async function $(e){let n=q(e.options);return n.resolvedPath&&t(n.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test(a(n.resolvedPath))?(e.sd=await Z(e.options,await X(n.resolvedPath)),e.sd.tokens):n.source.length===0?{}:e.options.splitThemes?Ee(e.options,n.source):Q(e.options,n.source)}async function De(e){let t=await $(e);if(Y(t)){let{tokensPath:t}=e.options,n=Array.isArray(t)?t.length>0?`tokensPath=[${t.map(e=>`"${e}"`).join(`, `)}]`:`default token paths / CSS fallbacks`:i(t)?`tokensPath="${t}"`:`default token paths / CSS fallbacks`;throw Error(`No design tokens found via ${n}. Provide tokensPath or add a tokens file.`)}return t}export{f as C,p as S,O as _,J as a,_ as b,L as c,V as d,_e as f,E as g,T as h,q as i,z as l,k as m,$ as n,j as o,A as p,De as r,B as s,Y as t,R as u,D as v,v as w,g as x,h as y};
2
+ //# sourceMappingURL=tokens-CFh9AQab.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens-CFh9AQab.mjs","names":[],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-BiL8zQzg.cjs");let n=require("@stryke/fs/exists"),r=require("@stryke/fs/is-file"),i=require("@stryke/path/join"),a=require("@stryke/type-checks/is-set-string"),o=require("node:path"),s=require("@stryke/type-checks/is-function"),c=require("@stryke/fs/resolve"),l=require("fast-glob");l=e.t(l,1);let u=require("style-dictionary");u=e.t(u,1);let d=require("style-dictionary/enums"),f=require("json5");f=e.t(f,1);let ee=require("smol-toml"),te=require("yaml");const p=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],m=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],ne=m.join(`,`),h=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],g=`**/*.{${ne}}`,_=/^(light|dark|dim|dimmed|high-contrast|hc|protanopia|deuteranopia|tritanopia|achromatopsia|achromatomaly|monochrome|monochromatic|grayscale|greyscale|bw|black-and-white|black-white|blackWhite|default|base|theme)([._-].+)?$/i,v={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},re=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ie=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,ae=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,oe=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,y=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,se=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,ce=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,le=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,ue=/^\{[^{}]+\}$/,de={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},b=new Set([`px`,`rem`]);function x(e){return Math.min(1,Math.max(0,e))}function S(e,t=100){let n=e.trim();if(n.endsWith(`%`))return x(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return x(r>1?r/255:r)}function fe(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function C(e){let t=fe(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function w(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function T(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function E(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=v[n];if(r)return r}}function D(e,n=[]){let r=E(n);if(typeof e==`string`){let t=e.trim();if(ue.test(t))return{value:t,type:r};let i=t.match(le);if(i?.[1])return{value:w(i[1]),type:r};if(re.test(t))return{value:C(t),type:`color`};let a=t.match(ie);if(a){let e=[S(a[1]),S(a[2]),S(a[3])],t=a[4]?a[4].endsWith(`%`)?x(Number.parseFloat(a[4])/100):x(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=t.match(ae);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?x(Number.parseFloat(o[4])/100):x(Number.parseFloat(o[4]))}:{}},type:`color`};let s=t.match(oe);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?x(Number.parseFloat(s[4])/100):x(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=t.match(y);if(c){let e=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return b.has(e)?{value:{value:n,unit:e},type:`dimension`}:{value:t,type:r===`dimension`?void 0:r}}let l=t.match(se);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=t.match(ce);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=de[t.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?t.includes(`,`)?{value:t.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:t.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!t.startsWith(`{`)?{value:t,type:void 0}:{value:t,type:r}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return r===`fontWeight`?{value:e,type:`fontWeight`}:r===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:r??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:r??`fontFamily`}:{value:e,type:r};if(t.n(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:b.has(t)?{value:e,type:`dimension`}:{value:e,type:r}}}return{value:e,type:r}}function pe(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=D(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function O(e,n=[]){if(Array.isArray(e))return e.map((e,t)=>O(e,[...n,String(t)]));if(!t.n(e))return e;if(T(e))return pe(e,n);let r={};for(let[t,i]of Object.entries(e)){if(t.startsWith(`$`)){r[t]=i;continue}r[t]=O(i,[...n,t])}if(!(`$type`in r)){let e=E(n);e&&n.length>0&&(r.$type=e)}return r}function k(e){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=n;for(let n=0;n<e.length-1;n++){let r=e[n],i=a[r];t.n(i)?T(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=e.at(-1),s=D(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];t.n(l)&&!T(l)?l.DEFAULT=c:a[o]=c}return O(n)}const me=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function A(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(me)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return k(t)}function j(e){return e?{verbosity:d.logVerbosityLevels.verbose}:{}}const M=`razorwind-infer`;function N(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return O(e)}function P(e){try{return N(f.default.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function F(e){try{return N((0,te.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function I(e){try{return N((0,ee.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const L=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>P(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>F(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>I(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>O(A(e))}];function R(){return Object.fromEntries(L.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function z(e){return O(e)}function B(){return{[M]:z}}function V(e=[]){let t={...R()},n={...B()},r=[...p],i=[M],a=0,o=0;for(let c of e){for(let e of c.parsers??[]){let n=e.name??`${c.name}-parser-${a}`;t[n]={pattern:e.pattern,parser:({contents:t})=>e.parser(t)},r.push(n),a++}for(let e of c.preprocessors??[]){let t=(0,s.isFunction)(e)?{name:`${c.name}-preprocessor-${o}`,preprocessor:e}:{name:e.name??`${c.name}-preprocessor-${o}`,preprocessor:e.preprocessor};n[t.name]=t.preprocessor,i.push(t.name),o++}}return{parsers:t,preprocessors:n,parserNames:r,preprocessorNames:i}}function H(e=[],t=u.default){let n=V(e);if(typeof t.registerParser==`function`)for(let[e,r]of Object.entries(n.parsers))t.registerParser({name:e,...r});if(typeof t.registerPreprocessor==`function`)for(let[e,r]of Object.entries(n.preprocessors))t.registerPreprocessor({name:e,preprocessor:r});return n}const he=H;function U(e,t){return(0,o.isAbsolute)(t)?t:(0,o.resolve)(e,t)}function W(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function G(e){return m.includes(W(e))}function K(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function q(e){return(0,i.joinPaths)(e,g)}function ge(e){return Array.isArray(e)?e.filter(a.isSetString):(0,a.isSetString)(e)?[e]:[]}const _e=/[*?[\]{}]/;function ve(e){return _e.test(e)}function ye(e){let t=e.search(/[*?[{]/);if(t<=0)return;let n=e.slice(0,t).replace(/[/\\]+$/,``);return n.length>0?n:void 0}function be(e,t){let i=U(e,t);if(ve(t)){let e=ye(i);if(e&&!(0,n.existsSync)(e))throw Error(`tokensPath "${t}" does not exist (resolved: ${i}).`);return{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}if(!(0,n.existsSync)(i))throw Error(`tokensPath "${t}" does not exist (resolved: ${i}).`);return(0,r.isDirectory)(i)?{resolvedPath:i,source:[q(i)],isStyleDictionaryConfig:!1}:K(i)?{resolvedPath:i,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}function J(e){let{cwd:t,tokensPath:i,fallbackPaths:a=[]}=e,o=ge(i);if(o.length>0){let e=o.map(e=>be(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of h){let i=U(t,e);if((0,n.existsSync)(i)){if((0,r.isDirectory)(i))return{resolvedPath:i,source:[q(i)],origin:`default`};if(K(i))return{resolvedPath:i,source:[],origin:`default`};if(G(i))return{resolvedPath:i,source:[i],origin:`default`}}}for(let e of a){if(!e)continue;let i=U(t,e);if(!(!(0,n.existsSync)(i)||(0,r.isDirectory)(i))&&(G(i)||W(i)===`css`))return{resolvedPath:i,source:[i],origin:`fallback`}}return{source:[],origin:`none`}}function Y(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(_)?.[1]?.toLowerCase()}function xe(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),typeof t==`function`)return t;if(typeof t==`object`&&`default`in t){t=t.default;continue}break}throw TypeError(`style-dictionary did not export a constructable StyleDictionary class.`)}const Se=xe(u.default);function X(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Ce(e){let t=await(0,c.importModule)(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Z(e,t){let n=V(e.plugins),r=new Se({...t,parsers:[...n.parserNames,...t.parsers??[]],preprocessors:[...n.preprocessorNames,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...n.parsers,...t.hooks?.parsers},preprocessors:{...n.preprocessors,...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}},j(e.verbose));return await r.hasInitialized,r}async function Q(e,t){return t.length===0?{}:(await Z(e,{source:t})).tokens}async function we(e){return(await(0,l.default)(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Te(e,t){let n=await we(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=Y(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return Q(e,t);let a={};if(i.length>0){let t=await Q(e,i);X(t)||(a.base=t)}for(let[t,n]of r)a[t]=await Q(e,n);return a}async function $(e){let t=J(e.options);return t.resolvedPath&&(0,n.existsSync)(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test((0,o.basename)(t.resolvedPath))?(e.sd=await Z(e.options,await Ce(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Te(e.options,t.source):Q(e.options,t.source)}async function Ee(e){let t=await $(e);if(X(t)){let{tokensPath:t}=e.options,n=Array.isArray(t)?t.length>0?`tokensPath=[${t.map(e=>`"${e}"`).join(`, `)}]`:`default token paths / CSS fallbacks`:(0,a.isSetString)(t)?`tokensPath="${t}"`:`default token paths / CSS fallbacks`;throw Error(`No design tokens found via ${n}. Provide tokensPath or add a tokens file.`)}return t}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return _}});
1
+ const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-BiL8zQzg.cjs");let n=require("@stryke/fs/exists"),r=require("@stryke/fs/is-file"),i=require("@stryke/path/join"),a=require("@stryke/type-checks/is-set-string"),o=require("node:path"),s=require("@stryke/type-checks/is-function"),c=require("@stryke/fs/resolve"),l=require("fast-glob");l=e.t(l,1);let u=require("style-dictionary");u=e.t(u,1);let d=require("style-dictionary/enums"),f=require("json5");f=e.t(f,1);let ee=require("smol-toml"),te=require("yaml");const p=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],m=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],ne=m.join(`,`),h=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],g=`**/*.{${ne}}`,_=/^(light|dark|dim|dimmed|high-contrast|hc|protanopia|deuteranopia|tritanopia|achromatopsia|achromatomaly|monochrome|monochromatic|grayscale|greyscale|bw|black-and-white|black-white|blackWhite|default|base|theme)([._-].+)?$/i,v={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},re=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ie=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,ae=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,oe=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,se=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,y=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,ce=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,le=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,ue=/^\{[^{}]+\}$/,b={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},x=new Set([`px`,`rem`]);function S(e){return Math.min(1,Math.max(0,e))}function C(e,t=100){let n=e.trim();if(n.endsWith(`%`))return S(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return S(r>1?r/255:r)}function de(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function fe(e){let t=de(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function w(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function T(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function E(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=v[n];if(r)return r}}function D(e,n=[]){let r=E(n);if(typeof e==`string`){let t=e.trim();if(ue.test(t))return{value:t,type:r};let i=t.match(le);if(i?.[1])return{value:w(i[1]),type:r};if(re.test(t))return{value:fe(t),type:`color`};let a=t.match(ie);if(a){let e=[C(a[1]),C(a[2]),C(a[3])],t=a[4]?a[4].endsWith(`%`)?S(Number.parseFloat(a[4])/100):S(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=t.match(ae);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?S(Number.parseFloat(o[4])/100):S(Number.parseFloat(o[4]))}:{}},type:`color`};let s=t.match(oe);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?S(Number.parseFloat(s[4])/100):S(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=t.match(se);if(c){let e=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return x.has(e)?{value:{value:n,unit:e},type:`dimension`}:{value:t,type:r===`dimension`?void 0:r}}let l=t.match(y);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=t.match(ce);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=b[t.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?t.includes(`,`)?{value:t.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:t.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!t.startsWith(`{`)?{value:t,type:void 0}:{value:t,type:r}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return r===`fontWeight`?{value:e,type:`fontWeight`}:r===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:r??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:r??`fontFamily`}:{value:e,type:r};if(t.n(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:x.has(t)?{value:e,type:`dimension`}:{value:e,type:r}}}return{value:e,type:r}}function pe(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=D(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function O(e,n=[]){if(Array.isArray(e))return e.map((e,t)=>O(e,[...n,String(t)]));if(!t.n(e))return e;if(T(e))return pe(e,n);let r={};for(let[t,i]of Object.entries(e)){if(t.startsWith(`$`)){r[t]=i;continue}r[t]=O(i,[...n,t])}if(!(`$type`in r)){let e=E(n);e&&n.length>0&&(r.$type=e)}return r}function k(e){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=n;for(let n=0;n<e.length-1;n++){let r=e[n],i=a[r];t.n(i)?T(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=e.at(-1),s=D(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];t.n(l)&&!T(l)?l.DEFAULT=c:a[o]=c}return O(n)}const me=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function A(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(me)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return k(t)}function j(e){return e?{verbosity:d.logVerbosityLevels.verbose}:{}}const M=`razorwind-infer`;function N(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return O(e)}function P(e){try{return N(f.default.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function F(e){try{return N((0,te.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function I(e){try{return N((0,ee.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const L=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>P(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>F(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>I(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>O(A(e))}];function R(){return Object.fromEntries(L.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function z(e){return O(e)}function B(){return{[M]:z}}function V(e=[]){let t={...R()},n={...B()},r=[...p],i=[M],a=0,o=0;for(let c of e){for(let e of c.parsers??[]){let n=e.name??`${c.name}-parser-${a}`;t[n]={pattern:e.pattern,parser:({contents:t})=>e.parser(t)},r.push(n),a++}for(let e of c.preprocessors??[]){let t=(0,s.isFunction)(e)?{name:`${c.name}-preprocessor-${o}`,preprocessor:e}:{name:e.name??`${c.name}-preprocessor-${o}`,preprocessor:e.preprocessor};n[t.name]=t.preprocessor,i.push(t.name),o++}}return{parsers:t,preprocessors:n,parserNames:r,preprocessorNames:i}}function H(e=[],t=u.default){let n=V(e);if(typeof t.registerParser==`function`)for(let[e,r]of Object.entries(n.parsers))t.registerParser({name:e,...r});if(typeof t.registerPreprocessor==`function`)for(let[e,r]of Object.entries(n.preprocessors))t.registerPreprocessor({name:e,preprocessor:r});return n}const he=H;function U(e,t){return(0,o.isAbsolute)(t)?t:(0,o.resolve)(e,t)}function W(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function G(e){return m.includes(W(e))}function K(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function q(e){return(0,i.joinPaths)(e,g)}function ge(e){return Array.isArray(e)?e.filter(a.isSetString):(0,a.isSetString)(e)?[e]:[]}const _e=/[*?[\]{}]/;function ve(e){return _e.test(e)}function ye(e){let t=e.search(/[*?[{]/);if(t<=0)return;let n=e.slice(0,t).replace(/[/\\]+$/,``);return n.length>0?n:void 0}function be(e,t){let i=U(e,t);if(ve(t)){let e=ye(i);if(e&&!(0,n.existsSync)(e))throw Error(`tokensPath "${t}" does not exist (resolved: ${i}).`);return{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}if(!(0,n.existsSync)(i))throw Error(`tokensPath "${t}" does not exist (resolved: ${i}).`);return(0,r.isDirectory)(i)?{resolvedPath:i,source:[q(i)],isStyleDictionaryConfig:!1}:K(i)?{resolvedPath:i,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}function J(e){let{cwd:t,tokensPath:i,fallbackPaths:a=[]}=e,o=ge(i);if(o.length>0){let e=o.map(e=>be(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of h){let i=U(t,e);if((0,n.existsSync)(i)){if((0,r.isDirectory)(i))return{resolvedPath:i,source:[q(i)],origin:`default`};if(K(i))return{resolvedPath:i,source:[],origin:`default`};if(G(i))return{resolvedPath:i,source:[i],origin:`default`}}}for(let e of a){if(!e)continue;let i=U(t,e);if(!(!(0,n.existsSync)(i)||(0,r.isDirectory)(i))&&(G(i)||W(i)===`css`))return{resolvedPath:i,source:[i],origin:`fallback`}}return{source:[],origin:`none`}}function Y(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(_)?.[1]?.toLowerCase()}function xe(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),typeof t==`function`)return t;if(typeof t==`object`&&`default`in t){t=t.default;continue}break}throw TypeError(`style-dictionary did not export a constructable StyleDictionary class.`)}const Se=xe(u.default);function X(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Ce(e){let t=await(0,c.importModule)(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Z(e,t){let n=V(e.plugins),r=new Se({...t,parsers:[...n.parserNames,...t.parsers??[]],preprocessors:[...n.preprocessorNames,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...n.parsers,...t.hooks?.parsers},preprocessors:{...n.preprocessors,...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}},j(e.verbose));return await r.hasInitialized,r}async function Q(e,t){return t.length===0?{}:(await Z(e,{source:t})).tokens}async function we(e){return(await(0,l.default)(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Te(e,t){let n=await we(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=Y(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return Q(e,t);let a={};if(i.length>0){let t=await Q(e,i);X(t)||(a.base=t)}for(let[t,n]of r)a[t]=await Q(e,n);return a}async function $(e){let t=J(e.options);return t.resolvedPath&&(0,n.existsSync)(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test((0,o.basename)(t.resolvedPath))?(e.sd=await Z(e.options,await Ce(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Te(e.options,t.source):Q(e.options,t.source)}async function Ee(e){let t=await $(e);if(X(t)){let{tokensPath:t}=e.options,n=Array.isArray(t)?t.length>0?`tokensPath=[${t.map(e=>`"${e}"`).join(`, `)}]`:`default token paths / CSS fallbacks`:(0,a.isSetString)(t)?`tokensPath="${t}"`:`default token paths / CSS fallbacks`;throw Error(`No design tokens found via ${n}. Provide tokensPath or add a tokens file.`)}return t}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return h}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/core",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "private": false,
5
5
  "description": "💨 Razorwind is a unified set of tools that make creating design systems a breeze.",
6
6
  "keywords": ["razorwind", "storm-software"],
@@ -145,5 +145,5 @@
145
145
  "typescript": "^6.0.3"
146
146
  },
147
147
  "publishConfig": { "access": "public" },
148
- "gitHead": "8646ac01928c5b68108e86adf33fb78941b35902"
148
+ "gitHead": "0bfdb728cdb6c241eae5072dab7984fe48146c22"
149
149
  }
@@ -1,2 +0,0 @@
1
- import{n as e}from"./utils-B5uabOd5.mjs";import{existsSync as t}from"@stryke/fs/exists";import{isDirectory as n}from"@stryke/fs/is-file";import{joinPaths as r}from"@stryke/path/join";import{isSetString as i}from"@stryke/type-checks/is-set-string";import{basename as a,isAbsolute as o,resolve as s}from"node:path";import{isFunction as c}from"@stryke/type-checks/is-function";import{importModule as l}from"@stryke/fs/resolve";import u from"fast-glob";import d from"style-dictionary";import{logVerbosityLevels as ee}from"style-dictionary/enums";import f from"json5";import{parse as te}from"smol-toml";import{parse as ne}from"yaml";const p=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],m=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],re=m.join(`,`),h=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],g=`**/*.{${re}}`,_=/^(light|dark|dim|dimmed|high-contrast|hc|protanopia|deuteranopia|tritanopia|achromatopsia|achromatomaly|monochrome|monochromatic|grayscale|greyscale|bw|black-and-white|black-white|blackWhite|default|base|theme)([._-].+)?$/i,v={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},ie=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ae=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,y=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,oe=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,b=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,se=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,ce=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,le=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,ue=/^\{[^{}]+\}$/,x={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},S=new Set([`px`,`rem`]);function C(e){return Math.min(1,Math.max(0,e))}function w(e,t=100){let n=e.trim();if(n.endsWith(`%`))return C(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return C(r>1?r/255:r)}function de(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function fe(e){let t=de(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function pe(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function T(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function E(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=v[n];if(r)return r}}function D(t,n=[]){let r=E(n);if(typeof t==`string`){let e=t.trim();if(ue.test(e))return{value:e,type:r};let i=e.match(le);if(i?.[1])return{value:pe(i[1]),type:r};if(ie.test(e))return{value:fe(e),type:`color`};let a=e.match(ae);if(a){let e=[w(a[1]),w(a[2]),w(a[3])],t=a[4]?a[4].endsWith(`%`)?C(Number.parseFloat(a[4])/100):C(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=e.match(y);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?C(Number.parseFloat(o[4])/100):C(Number.parseFloat(o[4]))}:{}},type:`color`};let s=e.match(oe);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?C(Number.parseFloat(s[4])/100):C(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=e.match(b);if(c){let t=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return S.has(t)?{value:{value:n,unit:t},type:`dimension`}:{value:e,type:r===`dimension`?void 0:r}}let l=e.match(se);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=e.match(ce);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=x[e.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?e.includes(`,`)?{value:e.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:e.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!e.startsWith(`{`)?{value:e,type:void 0}:{value:e,type:r}:{value:d,type:`fontWeight`}}if(typeof t==`number`)return r===`fontWeight`?{value:t,type:`fontWeight`}:r===`duration`?{value:{value:t,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:t,unit:`px`},type:`dimension`}:{value:t,type:r??`number`};if(Array.isArray(t))return t.length===4&&t.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:t,type:`cubicBezier`}:t.every(e=>typeof e==`string`)?{value:t,type:r??`fontFamily`}:{value:t,type:r};if(e(t)){if(`colorSpace`in t&&`components`in t)return{value:t,type:`color`};if(`value`in t&&`unit`in t){let e=String(t.unit).toLowerCase();return e===`ms`||e===`s`?{value:t,type:`duration`}:S.has(e)?{value:t,type:`dimension`}:{value:t,type:r}}}return{value:t,type:r}}function me(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=D(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function O(t,n=[]){if(Array.isArray(t))return t.map((e,t)=>O(e,[...n,String(t)]));if(!e(t))return t;if(T(t))return me(t,n);let r={};for(let[e,i]of Object.entries(t)){if(e.startsWith(`$`)){r[e]=i;continue}r[e]=O(i,[...n,e])}if(!(`$type`in r)){let e=E(n);e&&n.length>0&&(r.$type=e)}return r}function k(t){let n={};for(let[r,i]of Object.entries(t)){let t=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(t.length===0)continue;let a=n;for(let n=0;n<t.length-1;n++){let r=t[n],i=a[r];e(i)?T(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=t.at(-1),s=D(i,t),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];e(l)&&!T(l)?l.DEFAULT=c:a[o]=c}return O(n)}const he=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function A(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(he)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return k(t)}function j(e){return e?{verbosity:ee.verbose}:{}}const M=`razorwind-infer`;function N(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return O(e)}function P(e){try{return N(f.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function F(e){try{return N(ne(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function I(e){try{return N(te(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const L=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>P(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>F(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>I(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>O(A(e))}];function R(){return Object.fromEntries(L.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function z(e){return O(e)}function B(){return{[M]:z}}function V(e=[]){let t={...R()},n={...B()},r=[...p],i=[M],a=0,o=0;for(let s of e){for(let e of s.parsers??[]){let n=e.name??`${s.name}-parser-${a}`;t[n]={pattern:e.pattern,parser:({contents:t})=>e.parser(t)},r.push(n),a++}for(let e of s.preprocessors??[]){let t=c(e)?{name:`${s.name}-preprocessor-${o}`,preprocessor:e}:{name:e.name??`${s.name}-preprocessor-${o}`,preprocessor:e.preprocessor};n[t.name]=t.preprocessor,i.push(t.name),o++}}return{parsers:t,preprocessors:n,parserNames:r,preprocessorNames:i}}function H(e=[],t=d){let n=V(e);if(typeof t.registerParser==`function`)for(let[e,r]of Object.entries(n.parsers))t.registerParser({name:e,...r});if(typeof t.registerPreprocessor==`function`)for(let[e,r]of Object.entries(n.preprocessors))t.registerPreprocessor({name:e,preprocessor:r});return n}const ge=H;function U(e,t){return o(t)?t:s(e,t)}function W(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function G(e){return m.includes(W(e))}function K(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function q(e){return r(e,g)}function _e(e){return Array.isArray(e)?e.filter(i):i(e)?[e]:[]}const ve=/[*?[\]{}]/;function ye(e){return ve.test(e)}function be(e){let t=e.search(/[*?[{]/);if(t<=0)return;let n=e.slice(0,t).replace(/[/\\]+$/,``);return n.length>0?n:void 0}function xe(e,r){let i=U(e,r);if(ye(r)){let e=be(i);if(e&&!t(e))throw Error(`tokensPath "${r}" does not exist (resolved: ${i}).`);return{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}if(!t(i))throw Error(`tokensPath "${r}" does not exist (resolved: ${i}).`);return n(i)?{resolvedPath:i,source:[q(i)],isStyleDictionaryConfig:!1}:K(i)?{resolvedPath:i,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:i,source:[i],isStyleDictionaryConfig:!1}}function J(e){let{cwd:r,tokensPath:i,fallbackPaths:a=[]}=e,o=_e(i);if(o.length>0){let e=o.map(e=>xe(r,e)),t=e.filter(e=>e.isStyleDictionaryConfig);if(t.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:t[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of h){let i=U(r,e);if(t(i)){if(n(i))return{resolvedPath:i,source:[q(i)],origin:`default`};if(K(i))return{resolvedPath:i,source:[],origin:`default`};if(G(i))return{resolvedPath:i,source:[i],origin:`default`}}}for(let e of a){if(!e)continue;let i=U(r,e);if(!(!t(i)||n(i))&&(G(i)||W(i)===`css`))return{resolvedPath:i,source:[i],origin:`fallback`}}return{source:[],origin:`none`}}function Y(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(_)?.[1]?.toLowerCase()}function Se(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),typeof t==`function`)return t;if(typeof t==`object`&&`default`in t){t=t.default;continue}break}throw TypeError(`style-dictionary did not export a constructable StyleDictionary class.`)}const Ce=Se(d);function X(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function we(e){let t=await l(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Z(e,t){let n=V(e.plugins),r=new Ce({...t,parsers:[...n.parserNames,...t.parsers??[]],preprocessors:[...n.preprocessorNames,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...n.parsers,...t.hooks?.parsers},preprocessors:{...n.preprocessors,...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}},j(e.verbose));return await r.hasInitialized,r}async function Q(e,t){return t.length===0?{}:(await Z(e,{source:t})).tokens}async function Te(e){return(await u(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Ee(e,t){let n=await Te(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=Y(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return Q(e,t);let a={};if(i.length>0){let t=await Q(e,i);X(t)||(a.base=t)}for(let[t,n]of r)a[t]=await Q(e,n);return a}async function $(e){let n=J(e.options);return n.resolvedPath&&t(n.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test(a(n.resolvedPath))?(e.sd=await Z(e.options,await we(n.resolvedPath)),e.sd.tokens):n.source.length===0?{}:e.options.splitThemes?Ee(e.options,n.source):Q(e.options,n.source)}async function De(e){let t=await $(e);if(X(t)){let{tokensPath:t}=e.options,n=Array.isArray(t)?t.length>0?`tokensPath=[${t.map(e=>`"${e}"`).join(`, `)}]`:`default token paths / CSS fallbacks`:i(t)?`tokensPath="${t}"`:`default token paths / CSS fallbacks`;throw Error(`No design tokens found via ${n}. Provide tokensPath or add a tokens file.`)}return t}export{v as C,p as S,O as _,M as a,g as b,B as c,ge as d,j as f,k as g,D as h,Y as i,z as l,E as m,De as n,V as o,A as p,J as r,R as s,$ as t,H as u,h as v,m as x,_ as y};
2
- //# sourceMappingURL=tokens-CXYvywlP.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens-CXYvywlP.mjs","names":[],"sources":[],"mappings":""}