@razorwind/core 0.0.30 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-r6H4qZHJ.cjs"),n=require("./tokens-X_lH5RFn.cjs"),r=require("./plugin.cjs");let i=require("@power-plant/core"),a=require("@stryke/type-checks/is-empty-object"),o=require("defu"),s=require("style-dictionary");s=e.t(s,1);let c=require("@stryke/fs/exists"),l=require("@stryke/fs/is-file"),u=require("@stryke/fs/json"),d=require("@stryke/fs/list-files"),f=require("@stryke/path/append"),p=require("@stryke/path/file-path-fns"),m=require("@stryke/path/join"),h=require("@stryke/string-format/title-case"),g=require("@stryke/type-checks/is-set-object"),_=require("@stryke/type-checks/is-set-string"),v=require("node:fs/promises"),y=require("node:path"),ee=require("@stryke/env/get-env-paths"),b=require("@stryke/path/find"),x=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),S=require("c12"),ne=require("jiti"),C=require("node:fs"),w=require("node:os");w=e.t(w,1);var re=`0.0.30`;const ie=t.o.partial(),T=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),E=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function D(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function O(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function k(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}function A(e){let t=e.toLowerCase();if(T.has(t))return t}function ae(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&T.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,_.isSetString)(n)){let e=(0,p.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,g.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 P(e){return(0,g.isSetObject)(e)&&`path`in e}async function oe(e){let t=(0,m.joinPaths)(e,`package.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}let r={};(0,_.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,_.isSetString)(n.description)&&(r.description=n.description),(0,_.isSetString)(n.version)&&(r.version=n.version),(0,_.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=k(n.repository);if(i&&(r.repository=i),(0,g.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,g.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(_.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,l;P(a)?s=j(a):(0,g.isSetObject)(a)&&(o=N(a),`files`in a&&(s=j(a.files)),`usage`in a&&(l=M(a.usage)));let d=E(o??{},r);return s?.length&&(d.files=s),l?.length&&(d.usage=l),Object.keys(d).length>0?d:void 0}async function se(e){let t=(0,m.joinPaths)(e,`component.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}if(P(n)||Array.isArray(n)){let e=j(n);if(e)return{files:e}}if(!(0,g.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,v.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,f.appendPath)(t.path,e),r=(0,p.findFileExtensionSafe)(t.path)??``,i=t.language??A(r),a=t.name||(0,p.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,c.existsSync)(n)?await(0,v.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,m.joinPaths)(e,`usage`);if(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n))return;let r=await ce(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,m.joinPaths)(n,e),r=A((0,p.findFileExtensionSafe)(e)??``),i=(0,p.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,h.titleCase)(i),path:t,content:await(0,v.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ue(e,t){let n=t??(await(0,d.listFiles)(e)).filter(e=>(0,p.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,p.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,v.readFile)((0,f.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,p.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,v.readFile)((0,f.appendPath)(t.path,e),`utf8`):void 0,path:(0,f.appendPath)(t.path,e)}))}async function de(e){let n=await oe(e),r=await se(e);if(!n&&!r)return;let i=E(r??{},n??{}),a=(0,_.isSetString)(i.name)?i.name:(0,p.findFolderName)(e),o=(0,_.isSetString)(i.title)?i.title:(0,h.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=O(e.options.componentsPath);for(let r of n){let n=D(e.cwd,r);if(!(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n)))try{let e=await(0,v.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await de((0,m.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const I=t.r.partial(),L=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),R=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function z(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function B(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function V(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}function H(e){let t=e.toLowerCase();if(L.has(t))return t}function U(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&L.has(t))}function fe(e){return n._.test(e)}async function W(e){try{return(await(0,v.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&U(e.name)).map(e=>e.name)}catch{return[]}}function G(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 K(e){if(!(0,g.isSetObject)(e))return;let t=I.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function q(e){return(0,g.isSetObject)(e)&&`path`in e}async function J(e,t,n){let r=(0,f.appendPath)(e,t),i=H((0,p.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,v.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function pe(e){let t=(0,m.joinPaths)(e,`package.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}let r={};(0,_.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,_.isSetString)(n.description)&&(r.description=n.description),(0,_.isSetString)(n.version)&&(r.version=n.version),(0,_.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=V(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(_.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;q(a)?s=G(a):(0,g.isSetObject)(a)&&(o=K(a),`files`in a&&(s=G(a.files)));let l=R(o??{},r);return s?.length&&(l.files=s),Object.keys(l).length>0?l:void 0}async function me(e){let t=(0,m.joinPaths)(e,`icon.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}if(q(n)||Array.isArray(n)){let e=G(n);if(e)return{files:e}}return K(n)}async function he(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,f.appendPath)(t.path,e),r=(0,p.findFileExtensionSafe)(t.path)??``,i=t.type??H(r)??`file`,a=t.content===void 0?i===`svg`?await(0,v.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await W(e);return Promise.all(n.map(t=>J(t,e)))}async function ge(e){let n=await pe(e),r=await me(e),i=await W(e);if(!n&&!r&&i.length===0)return;let a=R(r??{},n??{}),o=(0,_.isSetString)(a.name)?a.name:(0,p.findFolderName)(e),s=(0,_.isSetString)(a.title)?a.title:(0,h.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await he(e,c.data.files)}}function Y(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,h.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 X(e,t,n){let r=await W(e);for(let i of r){let r=(0,p.findFileName)(i,{withExtension:!1});r&&Y(n,r,await J(i,e,t))}}async function Z(e){let t={},n=B(e.options.iconsPath);for(let r of n){let n=z(e.cwd,r);if(!(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n)))try{let e=await(0,v.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,m.joinPaths)(n,r.name);if(r.isDirectory()){if(fe(r.name)){await X(e,r.name,t);continue}let n=await ge(e);if(n){let e=t[n.name];t[n.name]=e?R(n,e):n}continue}if(r.isFile()&&U(r.name)){let e=(0,p.findFileName)(r.name,{withExtension:!1});if(!e)continue;Y(t,e,await J(r.name,n))}}}catch{continue}}return t}const Q=w.default.homedir();async function $(e,t){let n=t.configFile&&(0,C.existsSync)((0,x.replacePath)(t.configFile,e))?(0,x.replacePath)(t.configFile,e):t.configFile&&(0,C.existsSync)(t.configFile)?t.configFile:(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.ts`))?(0,m.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.js`))?(0,m.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.mts`))?(0,m.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.mjs`))?(0,m.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.cjs`))?(0,m.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.cts`))?(0,m.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.json`))?(0,m.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.yaml`))?(0,m.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.yml`))?(0,m.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(a.esmResolve(n));if(r?.default){let i={};(0,te.isFunction)(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):((0,g.isSetObject)(r.default)||Array.isArray(r.default))&&(i=r.default),((0,g.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,u]=await Promise.all([(0,S.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:Q,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,o.defu)({cwd:e,envPaths:{...r,home:Q}},t,s,(0,g.isSetObject)(c?.config)?{...c.config}:{},(0,g.isSetObject)(l?.config)?{...l.config}:{},(0,g.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,m.joinPaths)(e,`assets/icons`),plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(_.isSetString).map(e=>(0,b.findFilePath)(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=(0,_.isSetString)(d.componentsPath)?(0,b.findFilePath)(d.componentsPath):e;if(Array.isArray(d.iconsPath)){let t=d.iconsPath.filter(_.isSetString).map(e=>(0,b.findFilePath)(e));d.iconsPath=t.length>0?t:(0,m.joinPaths)(e,`assets/icons`)}else d.iconsPath=(0,_.isSetString)(d.iconsPath)?(0,b.findFilePath)(d.iconsPath):(0,m.joinPaths)(e,`assets/icons`);return Array.isArray(d.plugins)||(d.plugins=[]),d}function _e(e){return e}const ve=(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.`);n.l(t.options.plugins,s.default);let r=t.options.tokens;(!r||(0,a.isEmptyObject)(r))&&(r=await n.t(t));let c={tokens:r??{},components:(0,o.defu)(t.options.components??{},await F(t)??{}),icons:(0,o.defu)(t.options.icons??{},await Z(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))c=await e.extract(c,t.options);if(!c.tokens||(0,a.isEmptyObject)(c.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(c,t.options);return c},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.g,exports.RAZORWIND_INFER_PREPROCESSOR=n.a,exports.THEME_BASENAME_PATTERN=n._,exports.TOKEN_DIRECTORY_GLOB=n.v,exports.TOKEN_FILE_EXTENSIONS=n.y,exports.TYPE_PATH_HINTS=n.x,exports.WINDIE_PARSERS=n.b,exports.razorwindParsers=n.b,exports.defineConfig=_e,exports.definePlugin=r.definePlugin,exports.generator=ve,exports.getRazorwindParserHooks=n.o,exports.getRazorwindPreprocessorHooks=n.s,exports.inferTypeFromPath=n.f,exports.inferValue=n.p,exports.loadComponents=F,exports.loadIcons=Z,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.m,exports.normalizeTokenTree=n.h,exports.parseCssCustomProperties=n.d,exports.razorwindInferPreprocessor=n.c,exports.registerRazorwindHooks=n.l,exports.registerRazorwindParsers=n.u,exports.resolveConfig=$,exports.resolveTokensSource=n.r,exports.themeKeyFromPath=n.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./schema-r6H4qZHJ.cjs"),n=require("./tokens-X_lH5RFn.cjs"),r=require("./plugin.cjs");let i=require("@power-plant/core"),a=require("@stryke/type-checks/is-empty-object"),o=require("defu"),s=require("style-dictionary");s=e.t(s,1);let c=require("@stryke/fs/exists"),l=require("@stryke/fs/is-file"),u=require("@stryke/fs/json"),d=require("@stryke/fs/list-files"),f=require("@stryke/path/append"),p=require("@stryke/path/file-path-fns"),m=require("@stryke/path/join"),h=require("@stryke/string-format/title-case"),g=require("@stryke/type-checks/is-set-object"),_=require("@stryke/type-checks/is-set-string"),v=require("node:fs/promises"),y=require("node:path"),ee=require("@stryke/env/get-env-paths"),b=require("@stryke/path/find"),x=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),S=require("c12"),ne=require("jiti"),C=require("node:fs"),w=require("node:os");w=e.t(w,1);var re=`0.0.31`;const ie=t.o.partial(),T=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),E=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function D(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function O(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function k(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}function A(e){let t=e.toLowerCase();if(T.has(t))return t}function ae(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&T.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,_.isSetString)(n)){let e=(0,p.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,g.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 P(e){return(0,g.isSetObject)(e)&&`path`in e}async function oe(e){let t=(0,m.joinPaths)(e,`package.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}let r={};(0,_.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,_.isSetString)(n.description)&&(r.description=n.description),(0,_.isSetString)(n.version)&&(r.version=n.version),(0,_.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=k(n.repository);if(i&&(r.repository=i),(0,g.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,g.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(_.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,l;P(a)?s=j(a):(0,g.isSetObject)(a)&&(o=N(a),`files`in a&&(s=j(a.files)),`usage`in a&&(l=M(a.usage)));let d=E(o??{},r);return s?.length&&(d.files=s),l?.length&&(d.usage=l),Object.keys(d).length>0?d:void 0}async function se(e){let t=(0,m.joinPaths)(e,`component.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}if(P(n)||Array.isArray(n)){let e=j(n);if(e)return{files:e}}if(!(0,g.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,v.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,f.appendPath)(t.path,e),r=(0,p.findFileExtensionSafe)(t.path)??``,i=t.language??A(r),a=t.name||(0,p.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,c.existsSync)(n)?await(0,v.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,m.joinPaths)(e,`usage`);if(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n))return;let r=await ce(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,m.joinPaths)(n,e),r=A((0,p.findFileExtensionSafe)(e)??``),i=(0,p.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,h.titleCase)(i),path:t,content:await(0,v.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ue(e,t){let n=t??(await(0,d.listFiles)(e)).filter(e=>(0,p.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,p.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,v.readFile)((0,f.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,p.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,v.readFile)((0,f.appendPath)(t.path,e),`utf8`):void 0,path:(0,f.appendPath)(t.path,e)}))}async function de(e){let n=await oe(e),r=await se(e);if(!n&&!r)return;let i=E(r??{},n??{}),a=(0,_.isSetString)(i.name)?i.name:(0,p.findFolderName)(e),o=(0,_.isSetString)(i.title)?i.title:(0,h.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=O(e.options.componentsPath);for(let r of n){let n=D(e.cwd,r);if(!(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n)))try{let e=await(0,v.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await de((0,m.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const I=t.r.partial(),L=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),R=(0,o.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function z(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function B(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function V(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}function H(e){let t=e.toLowerCase();if(L.has(t))return t}function U(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&L.has(t))}function fe(e){return n._.test(e)}async function W(e){try{return(await(0,v.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&U(e.name)).map(e=>e.name)}catch{return[]}}function G(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 K(e){if(!(0,g.isSetObject)(e))return;let t=I.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function q(e){return(0,g.isSetObject)(e)&&`path`in e}async function J(e,t,n){let r=(0,f.appendPath)(e,t),i=H((0,p.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,v.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function pe(e){let t=(0,m.joinPaths)(e,`package.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}let r={};(0,_.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,_.isSetString)(n.description)&&(r.description=n.description),(0,_.isSetString)(n.version)&&(r.version=n.version),(0,_.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=V(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(_.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;q(a)?s=G(a):(0,g.isSetObject)(a)&&(o=K(a),`files`in a&&(s=G(a.files)));let l=R(o??{},r);return s?.length&&(l.files=s),Object.keys(l).length>0?l:void 0}async function me(e){let t=(0,m.joinPaths)(e,`icon.json`);if(!(0,c.existsSync)(t))return;let n;try{n=await(0,u.readJsonFile)(t)}catch{return}if(q(n)||Array.isArray(n)){let e=G(n);if(e)return{files:e}}return K(n)}async function he(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,f.appendPath)(t.path,e),r=(0,p.findFileExtensionSafe)(t.path)??``,i=t.type??H(r)??`file`,a=t.content===void 0?i===`svg`?await(0,v.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await W(e);return Promise.all(n.map(t=>J(t,e)))}async function ge(e){let n=await pe(e),r=await me(e),i=await W(e);if(!n&&!r&&i.length===0)return;let a=R(r??{},n??{}),o=(0,_.isSetString)(a.name)?a.name:(0,p.findFolderName)(e),s=(0,_.isSetString)(a.title)?a.title:(0,h.titleCase)(o),c=t.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await he(e,c.data.files)}}function Y(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,h.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 X(e,t,n){let r=await W(e);for(let i of r){let r=(0,p.findFileName)(i,{withExtension:!1});r&&Y(n,r,await J(i,e,t))}}async function Z(e){let t={},n=B(e.options.iconsPath);for(let r of n){let n=z(e.cwd,r);if(!(!(0,c.existsSync)(n)||!(0,l.isDirectory)(n)))try{let e=await(0,v.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,m.joinPaths)(n,r.name);if(r.isDirectory()){if(fe(r.name)){await X(e,r.name,t);continue}let n=await ge(e);if(n){let e=t[n.name];t[n.name]=e?R(n,e):n}continue}if(r.isFile()&&U(r.name)){let e=(0,p.findFileName)(r.name,{withExtension:!1});if(!e)continue;Y(t,e,await J(r.name,n))}}}catch{continue}}return t}const Q=w.default.homedir();async function $(e,t){let n=t.configFile&&(0,C.existsSync)((0,x.replacePath)(t.configFile,e))?(0,x.replacePath)(t.configFile,e):t.configFile&&(0,C.existsSync)(t.configFile)?t.configFile:(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,m.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.ts`))?(0,m.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.js`))?(0,m.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.mts`))?(0,m.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.mjs`))?(0,m.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.cjs`))?(0,m.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.cts`))?(0,m.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.json`))?(0,m.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.yaml`))?(0,m.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,m.joinPaths)(e,`razorwind.config.yml`))?(0,m.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(a.esmResolve(n));if(r?.default){let i={};(0,te.isFunction)(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):((0,g.isSetObject)(r.default)||Array.isArray(r.default))&&(i=r.default),((0,g.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,u]=await Promise.all([(0,S.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:Q,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=(0,o.defu)({cwd:e,envPaths:{...r,home:Q}},t,s,(0,g.isSetObject)(c?.config)?{...c.config}:{},(0,g.isSetObject)(l?.config)?{...l.config}:{},(0,g.isSetObject)(u?.config)?{...u.config}:{},{componentsPath:e,iconsPath:(0,m.joinPaths)(e,`assets/icons`),plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(_.isSetString).map(e=>(0,b.findFilePath)(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=(0,_.isSetString)(d.componentsPath)?(0,b.findFilePath)(d.componentsPath):e;if(Array.isArray(d.iconsPath)){let t=d.iconsPath.filter(_.isSetString).map(e=>(0,b.findFilePath)(e));d.iconsPath=t.length>0?t:(0,m.joinPaths)(e,`assets/icons`)}else d.iconsPath=(0,_.isSetString)(d.iconsPath)?(0,b.findFilePath)(d.iconsPath):(0,m.joinPaths)(e,`assets/icons`);return Array.isArray(d.plugins)||(d.plugins=[]),d}function _e(e){return e}const ve=(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.`);n.l(t.options.plugins,s.default);let r=t.options.tokens;(!r||(0,a.isEmptyObject)(r))&&(r=await n.t(t));let c={tokens:r??{},components:(0,o.defu)(t.options.components??{},await F(t)??{}),icons:(0,o.defu)(t.options.icons??{},await Z(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))c=await e.extract(c,t.options);if(!c.tokens||(0,a.isEmptyObject)(c.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(c,t.options);return c},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.g,exports.RAZORWIND_INFER_PREPROCESSOR=n.a,exports.THEME_BASENAME_PATTERN=n._,exports.TOKEN_DIRECTORY_GLOB=n.v,exports.TOKEN_FILE_EXTENSIONS=n.y,exports.TYPE_PATH_HINTS=n.x,exports.WINDIE_PARSERS=n.b,exports.razorwindParsers=n.b,exports.defineConfig=_e,exports.definePlugin=r.definePlugin,exports.generator=ve,exports.getRazorwindParserHooks=n.o,exports.getRazorwindPreprocessorHooks=n.s,exports.inferTypeFromPath=n.f,exports.inferValue=n.p,exports.loadComponents=F,exports.loadIcons=Z,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.m,exports.normalizeTokenTree=n.h,exports.parseCssCustomProperties=n.d,exports.razorwindInferPreprocessor=n.c,exports.registerRazorwindHooks=n.l,exports.registerRazorwindParsers=n.u,exports.resolveConfig=$,exports.resolveTokensSource=n.r,exports.themeKeyFromPath=n.i;
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-jfwKMfbW.mjs";import{_ as o,a as s,b as c,c as l,d as u,f as ee,g as te,h as ne,i as re,l as d,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as f,u as ue,v as de,x as fe,y as pe}from"./tokens-DQh8MSxD.mjs";import{definePlugin as me}from"./plugin.mjs";import{defineGenerator as he,defineSchema as ge,useExecution as p}from"@power-plant/core";import{isEmptyObject as m}from"@stryke/type-checks/is-empty-object";import{createDefu as h,defu as g}from"defu";import _e from"style-dictionary";import{existsSync as _}from"@stryke/fs/exists";import{isDirectory as v}from"@stryke/fs/is-file";import{readJsonFile as y}from"@stryke/fs/json";import{listFiles as ve}from"@stryke/fs/list-files";import{appendPath as b}from"@stryke/path/append";import{findFileExtensionSafe as x,findFileName as S,findFolderName as C}from"@stryke/path/file-path-fns";import{joinPaths as w}from"@stryke/path/join";import{titleCase as T}from"@stryke/string-format/title-case";import{isSetObject as E}from"@stryke/type-checks/is-set-object";import{isSetString as D}from"@stryke/type-checks/is-set-string";import{readFile as O,readdir as k}from"node:fs/promises";import{isAbsolute as A,resolve as j}from"node:path";import{getEnvPaths as ye}from"@stryke/env/get-env-paths";import{findFilePath as M}from"@stryke/path/find";import{replacePath as N}from"@stryke/path/replace";import{isFunction as be}from"@stryke/type-checks/is-function";import{loadConfig as P}from"c12";import{createJiti as xe}from"jiti";import{existsSync as F}from"node:fs";import Se from"node:os";var Ce=`0.0.30`;const we=t.partial(),I=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),L=h((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Te(e,t){return A(t)?t:j(e,t)}function Ee(e){return Array.isArray(e)?e.filter(D):D(e)?[e]:[]}function De(e){if(D(e))return e;if(E(e)&&`url`in e&&D(e.url))return e.url}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function Oe(e){let t=x(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(D(t)){let e=S(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(!E(e))return;let{files:t,usage:n,...r}=e,i=we.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function H(e){return E(e)&&`path`in e}async function ke(e){let t=w(e,`package.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}let r={};D(n.name)&&(r.name=n.name,r.title=n.name),D(n.description)&&(r.description=n.description),D(n.version)&&(r.version=n.version),D(n.homepage)&&(r.homepage=n.homepage);let i=De(n.repository);if(i&&(r.repository=i),E(n.dependencies)&&(r.dependencies=n.dependencies),E(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(D);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;H(a)?s=z(a):E(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 Ae(e){let t=w(e,`component.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}if(H(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}if(!E(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 je(e){try{return(await k(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 Me(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=b(t.path,e),r=x(t.path)??``,i=t.language??R(r),a=t.name||S(t.path,{withExtension:!1})||t.path,o=t.content===void 0?_(n)?await O(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=w(e,`usage`);if(!_(n)||!v(n))return;let r=await je(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=w(n,e),r=R(x(e)??``),i=S(e,{withExtension:!1})||e;return{name:i,title:T(i),path:t,content:await O(t,`utf8`),...r?{language:r}:{}}}))}async function Ne(e,t){let n=t??(await ve(e)).filter(e=>S(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(x(t))?`component`:`file`,path:t,content:await O(b(t,e),`utf8`)}:{type:/[tj]sx$/.test(x(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await O(b(t.path,e),`utf8`):void 0,path:b(t.path,e)}))}async function Pe(e){let n=await ke(e),r=await Ae(e);if(!n&&!r)return;let i=L(r??{},n??{}),a=D(i.name)?i.name:C(e),o=D(i.title)?i.title:T(a),s=t.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await Me(e,s.data.usage);return{...s.data,files:await Ne(e,s.data.files),...c?.length?{usage:c}:{}}}async function U(e){let t={},n=Ee(e.options.componentsPath);for(let r of n){let n=Te(e.cwd,r);if(!(!_(n)||!v(n)))try{let e=await k(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await Pe(w(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Fe=e.partial(),W=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),G=h((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Ie(e,t){return A(t)?t:j(e,t)}function Le(e){return Array.isArray(e)?e.filter(D):D(e)?[e]:[]}function Re(e){if(D(e))return e;if(E(e)&&`url`in e&&D(e.url))return e.url}function K(e){let t=e.toLowerCase();if(W.has(t))return t}function q(e){let t=x(e)?.toLowerCase();return!!(t&&W.has(t))}function ze(e){return o.test(e)}async function J(e){try{return(await k(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(!E(e))return;let t=Fe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Z(e){return E(e)&&`path`in e}async function Q(e,t,n){let r=b(e,t),i=K(x(e)??``)??`file`,a=i===`svg`?await O(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Be(e){let t=w(e,`package.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}let r={};D(n.name)&&(r.name=n.name,r.title=n.name),D(n.description)&&(r.description=n.description),D(n.version)&&(r.version=n.version),D(n.homepage)&&(r.homepage=n.homepage);let i=Re(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(D);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Z(a)?s=Y(a):E(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 Ve(e){let t=w(e,`icon.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}if(Z(n)||Array.isArray(n)){let e=Y(n);if(e)return{files:e}}return X(n)}async function He(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=b(t.path,e),r=x(t.path)??``,i=t.type??K(r)??`file`,a=t.content===void 0?i===`svg`?await O(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=>Q(t,e)))}async function Ue(t){let n=await Be(t),r=await Ve(t),i=await J(t);if(!n&&!r&&i.length===0)return;let a=G(r??{},n??{}),o=D(a.name)?a.name:C(t),s=D(a.title)?a.title:T(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await He(t,c.data.files)}}function $(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:T(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 We(e,t,n){let r=await J(e);for(let i of r){let r=S(i,{withExtension:!1});r&&$(n,r,await Q(i,e,t))}}async function Ge(e){let t={},n=Le(e.options.iconsPath);for(let r of n){let n=Ie(e.cwd,r);if(!(!_(n)||!v(n)))try{let e=await k(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=w(n,r.name);if(r.isDirectory()){if(ze(r.name)){await We(e,r.name,t);continue}let n=await Ue(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=S(r.name,{withExtension:!1});if(!e)continue;$(t,e,await Q(r.name,n))}}}catch{continue}}return t}const Ke=Se.homedir();async function qe(e,t){let n=t.configFile&&F(N(t.configFile,e))?N(t.configFile,e):t.configFile&&F(t.configFile)?t.configFile:F(w(e,`razorwind.${t.mode}.ts`))?w(e,`razorwind.${t.mode}.ts`):F(w(e,`razorwind.${t.mode}.js`))?w(e,`razorwind.${t.mode}.js`):F(w(e,`razorwind.${t.mode}.mts`))?w(e,`razorwind.${t.mode}.mts`):F(w(e,`razorwind.${t.mode}.mjs`))?w(e,`razorwind.${t.mode}.mjs`):F(w(e,`razorwind.${t.mode}.cjs`))?w(e,`razorwind.${t.mode}.cjs`):F(w(e,`razorwind.${t.mode}.cts`))?w(e,`razorwind.${t.mode}.cts`):F(w(e,`razorwind.${t.mode}.json`))?w(e,`razorwind.${t.mode}.json`):F(w(e,`razorwind.${t.mode}.yaml`))?w(e,`razorwind.${t.mode}.yaml`):F(w(e,`razorwind.${t.mode}.yml`))?w(e,`razorwind.${t.mode}.yml`):F(w(e,`razorwind.config.ts`))?w(e,`razorwind.config.ts`):F(w(e,`razorwind.config.js`))?w(e,`razorwind.config.js`):F(w(e,`razorwind.config.mts`))?w(e,`razorwind.config.mts`):F(w(e,`razorwind.config.mjs`))?w(e,`razorwind.config.mjs`):F(w(e,`razorwind.config.cjs`))?w(e,`razorwind.config.cjs`):F(w(e,`razorwind.config.cts`))?w(e,`razorwind.config.cts`):F(w(e,`razorwind.config.json`))?w(e,`razorwind.config.json`):F(w(e,`razorwind.config.yaml`))?w(e,`razorwind.config.yaml`):F(w(e,`razorwind.config.yml`))?w(e,`razorwind.config.yml`):void 0,r=ye({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=xe(e,i),o={};if(n){let r=await a.import(a.esmResolve(n));if(r?.default){let i={};be(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):(E(r.default)||Array.isArray(r.default))&&(i=r.default),(E(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([P({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),P({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),P({cwd:Ke,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=g({cwd:e,envPaths:{...r,home:Ke}},t,o,E(s?.config)?{...s.config}:{},E(c?.config)?{...c.config}:{},E(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:w(e,`assets/icons`),plugins:[]});if(Array.isArray(u.componentsPath)){let t=u.componentsPath.filter(D).map(e=>M(e));u.componentsPath=t.length>0?t:e}else u.componentsPath=D(u.componentsPath)?M(u.componentsPath):e;if(Array.isArray(u.iconsPath)){let t=u.iconsPath.filter(D).map(e=>M(e));u.iconsPath=t.length>0?t:w(e,`assets/icons`)}else u.iconsPath=D(u.iconsPath)?M(u.iconsPath):w(e,`assets/icons`);return Array.isArray(u.plugins)||(u.plugins=[]),u}function Je(e){return e}const Ye=he({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:Ce,tags:[`razorwind`,`dtcg`]},schema:ge({schema:i}),input:async e=>{let t=p();if(t.options=await qe(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.`);d(t.options.plugins,_e);let n=t.options.tokens;(!n||m(n))&&(n=await f(t));let r={tokens:n??{},components:g(t.options.components??{},await U(t)??{}),icons:g(t.options.icons??{},await Ge(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||m(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=g(i,n)}return n}});export{te as DEFAULT_TOKEN_PATH_CANDIDATES,s as RAZORWIND_INFER_PREPROCESSOR,o as THEME_BASENAME_PATTERN,de as TOKEN_DIRECTORY_GLOB,pe as TOKEN_FILE_EXTENSIONS,fe as TYPE_PATH_HINTS,c as WINDIE_PARSERS,c as razorwindParsers,Je as defineConfig,me as definePlugin,Ye as generator,oe as getRazorwindParserHooks,le as getRazorwindPreprocessorHooks,ee as inferTypeFromPath,se as inferValue,U as loadComponents,Ge as loadIcons,f as loadTokens,ae as loadTokensOrThrow,ie as nestFlatTokens,ne as normalizeTokenTree,u as parseCssCustomProperties,l as razorwindInferPreprocessor,d as registerRazorwindHooks,ue as registerRazorwindParsers,qe as resolveConfig,ce as resolveTokensSource,re as themeKeyFromPath};
1
+ import{a as e,c as t,i as n,l as r,r as i,s as a}from"./schema-jfwKMfbW.mjs";import{_ as o,a as s,b as c,c as l,d as u,f as ee,g as te,h as ne,i as re,l as d,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as f,u as ue,v as de,x as fe,y as pe}from"./tokens-DQh8MSxD.mjs";import{definePlugin as me}from"./plugin.mjs";import{defineGenerator as he,defineSchema as ge,useExecution as p}from"@power-plant/core";import{isEmptyObject as m}from"@stryke/type-checks/is-empty-object";import{createDefu as h,defu as g}from"defu";import _e from"style-dictionary";import{existsSync as _}from"@stryke/fs/exists";import{isDirectory as v}from"@stryke/fs/is-file";import{readJsonFile as y}from"@stryke/fs/json";import{listFiles as ve}from"@stryke/fs/list-files";import{appendPath as b}from"@stryke/path/append";import{findFileExtensionSafe as x,findFileName as S,findFolderName as C}from"@stryke/path/file-path-fns";import{joinPaths as w}from"@stryke/path/join";import{titleCase as T}from"@stryke/string-format/title-case";import{isSetObject as E}from"@stryke/type-checks/is-set-object";import{isSetString as D}from"@stryke/type-checks/is-set-string";import{readFile as O,readdir as k}from"node:fs/promises";import{isAbsolute as A,resolve as j}from"node:path";import{getEnvPaths as ye}from"@stryke/env/get-env-paths";import{findFilePath as M}from"@stryke/path/find";import{replacePath as N}from"@stryke/path/replace";import{isFunction as be}from"@stryke/type-checks/is-function";import{loadConfig as P}from"c12";import{createJiti as xe}from"jiti";import{existsSync as F}from"node:fs";import Se from"node:os";var Ce=`0.0.31`;const we=t.partial(),I=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),L=h((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Te(e,t){return A(t)?t:j(e,t)}function Ee(e){return Array.isArray(e)?e.filter(D):D(e)?[e]:[]}function De(e){if(D(e))return e;if(E(e)&&`url`in e&&D(e.url))return e.url}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function Oe(e){let t=x(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(D(t)){let e=S(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(!E(e))return;let{files:t,usage:n,...r}=e,i=we.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function H(e){return E(e)&&`path`in e}async function ke(e){let t=w(e,`package.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}let r={};D(n.name)&&(r.name=n.name,r.title=n.name),D(n.description)&&(r.description=n.description),D(n.version)&&(r.version=n.version),D(n.homepage)&&(r.homepage=n.homepage);let i=De(n.repository);if(i&&(r.repository=i),E(n.dependencies)&&(r.dependencies=n.dependencies),E(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(D);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;H(a)?s=z(a):E(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 Ae(e){let t=w(e,`component.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}if(H(n)||Array.isArray(n)){let e=z(n);if(e)return{files:e}}if(!E(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 je(e){try{return(await k(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 Me(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=b(t.path,e),r=x(t.path)??``,i=t.language??R(r),a=t.name||S(t.path,{withExtension:!1})||t.path,o=t.content===void 0?_(n)?await O(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=w(e,`usage`);if(!_(n)||!v(n))return;let r=await je(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=w(n,e),r=R(x(e)??``),i=S(e,{withExtension:!1})||e;return{name:i,title:T(i),path:t,content:await O(t,`utf8`),...r?{language:r}:{}}}))}async function Ne(e,t){let n=t??(await ve(e)).filter(e=>S(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(x(t))?`component`:`file`,path:t,content:await O(b(t,e),`utf8`)}:{type:/[tj]sx$/.test(x(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await O(b(t.path,e),`utf8`):void 0,path:b(t.path,e)}))}async function Pe(e){let n=await ke(e),r=await Ae(e);if(!n&&!r)return;let i=L(r??{},n??{}),a=D(i.name)?i.name:C(e),o=D(i.title)?i.title:T(a),s=t.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await Me(e,s.data.usage);return{...s.data,files:await Ne(e,s.data.files),...c?.length?{usage:c}:{}}}async function U(e){let t={},n=Ee(e.options.componentsPath);for(let r of n){let n=Te(e.cwd,r);if(!(!_(n)||!v(n)))try{let e=await k(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await Pe(w(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Fe=e.partial(),W=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),G=h((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Ie(e,t){return A(t)?t:j(e,t)}function Le(e){return Array.isArray(e)?e.filter(D):D(e)?[e]:[]}function Re(e){if(D(e))return e;if(E(e)&&`url`in e&&D(e.url))return e.url}function K(e){let t=e.toLowerCase();if(W.has(t))return t}function q(e){let t=x(e)?.toLowerCase();return!!(t&&W.has(t))}function ze(e){return o.test(e)}async function J(e){try{return(await k(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(!E(e))return;let t=Fe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Z(e){return E(e)&&`path`in e}async function Q(e,t,n){let r=b(e,t),i=K(x(e)??``)??`file`,a=i===`svg`?await O(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Be(e){let t=w(e,`package.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}let r={};D(n.name)&&(r.name=n.name,r.title=n.name),D(n.description)&&(r.description=n.description),D(n.version)&&(r.version=n.version),D(n.homepage)&&(r.homepage=n.homepage);let i=Re(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(D);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Z(a)?s=Y(a):E(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 Ve(e){let t=w(e,`icon.json`);if(!_(t))return;let n;try{n=await y(t)}catch{return}if(Z(n)||Array.isArray(n)){let e=Y(n);if(e)return{files:e}}return X(n)}async function He(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=b(t.path,e),r=x(t.path)??``,i=t.type??K(r)??`file`,a=t.content===void 0?i===`svg`?await O(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=>Q(t,e)))}async function Ue(t){let n=await Be(t),r=await Ve(t),i=await J(t);if(!n&&!r&&i.length===0)return;let a=G(r??{},n??{}),o=D(a.name)?a.name:C(t),s=D(a.title)?a.title:T(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await He(t,c.data.files)}}function $(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:T(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 We(e,t,n){let r=await J(e);for(let i of r){let r=S(i,{withExtension:!1});r&&$(n,r,await Q(i,e,t))}}async function Ge(e){let t={},n=Le(e.options.iconsPath);for(let r of n){let n=Ie(e.cwd,r);if(!(!_(n)||!v(n)))try{let e=await k(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=w(n,r.name);if(r.isDirectory()){if(ze(r.name)){await We(e,r.name,t);continue}let n=await Ue(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=S(r.name,{withExtension:!1});if(!e)continue;$(t,e,await Q(r.name,n))}}}catch{continue}}return t}const Ke=Se.homedir();async function qe(e,t){let n=t.configFile&&F(N(t.configFile,e))?N(t.configFile,e):t.configFile&&F(t.configFile)?t.configFile:F(w(e,`razorwind.${t.mode}.ts`))?w(e,`razorwind.${t.mode}.ts`):F(w(e,`razorwind.${t.mode}.js`))?w(e,`razorwind.${t.mode}.js`):F(w(e,`razorwind.${t.mode}.mts`))?w(e,`razorwind.${t.mode}.mts`):F(w(e,`razorwind.${t.mode}.mjs`))?w(e,`razorwind.${t.mode}.mjs`):F(w(e,`razorwind.${t.mode}.cjs`))?w(e,`razorwind.${t.mode}.cjs`):F(w(e,`razorwind.${t.mode}.cts`))?w(e,`razorwind.${t.mode}.cts`):F(w(e,`razorwind.${t.mode}.json`))?w(e,`razorwind.${t.mode}.json`):F(w(e,`razorwind.${t.mode}.yaml`))?w(e,`razorwind.${t.mode}.yaml`):F(w(e,`razorwind.${t.mode}.yml`))?w(e,`razorwind.${t.mode}.yml`):F(w(e,`razorwind.config.ts`))?w(e,`razorwind.config.ts`):F(w(e,`razorwind.config.js`))?w(e,`razorwind.config.js`):F(w(e,`razorwind.config.mts`))?w(e,`razorwind.config.mts`):F(w(e,`razorwind.config.mjs`))?w(e,`razorwind.config.mjs`):F(w(e,`razorwind.config.cjs`))?w(e,`razorwind.config.cjs`):F(w(e,`razorwind.config.cts`))?w(e,`razorwind.config.cts`):F(w(e,`razorwind.config.json`))?w(e,`razorwind.config.json`):F(w(e,`razorwind.config.yaml`))?w(e,`razorwind.config.yaml`):F(w(e,`razorwind.config.yml`))?w(e,`razorwind.config.yml`):void 0,r=ye({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=xe(e,i),o={};if(n){let r=await a.import(a.esmResolve(n));if(r?.default){let i={};be(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):(E(r.default)||Array.isArray(r.default))&&(i=r.default),(E(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([P({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),P({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),P({cwd:Ke,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=g({cwd:e,envPaths:{...r,home:Ke}},t,o,E(s?.config)?{...s.config}:{},E(c?.config)?{...c.config}:{},E(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:w(e,`assets/icons`),plugins:[]});if(Array.isArray(u.componentsPath)){let t=u.componentsPath.filter(D).map(e=>M(e));u.componentsPath=t.length>0?t:e}else u.componentsPath=D(u.componentsPath)?M(u.componentsPath):e;if(Array.isArray(u.iconsPath)){let t=u.iconsPath.filter(D).map(e=>M(e));u.iconsPath=t.length>0?t:w(e,`assets/icons`)}else u.iconsPath=D(u.iconsPath)?M(u.iconsPath):w(e,`assets/icons`);return Array.isArray(u.plugins)||(u.plugins=[]),u}function Je(e){return e}const Ye=he({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, and icons.`,version:Ce,tags:[`razorwind`,`dtcg`]},schema:ge({schema:i}),input:async e=>{let t=p();if(t.options=await qe(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.`);d(t.options.plugins,_e);let n=t.options.tokens;(!n||m(n))&&(n=await f(t));let r={tokens:n??{},components:g(t.options.components??{},await U(t)??{}),icons:g(t.options.icons??{},await Ge(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||m(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=g(i,n)}return n}});export{te as DEFAULT_TOKEN_PATH_CANDIDATES,s as RAZORWIND_INFER_PREPROCESSOR,o as THEME_BASENAME_PATTERN,de as TOKEN_DIRECTORY_GLOB,pe as TOKEN_FILE_EXTENSIONS,fe as TYPE_PATH_HINTS,c as WINDIE_PARSERS,c as razorwindParsers,Je as defineConfig,me as definePlugin,Ye as generator,oe as getRazorwindParserHooks,le as getRazorwindPreprocessorHooks,ee as inferTypeFromPath,se as inferValue,U as loadComponents,Ge as loadIcons,f as loadTokens,ae as loadTokensOrThrow,ie as nestFlatTokens,ne as normalizeTokenTree,u as parseCssCustomProperties,l as razorwindInferPreprocessor,d as registerRazorwindHooks,ue as registerRazorwindParsers,qe as resolveConfig,ce as resolveTokensSource,re as themeKeyFromPath};
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/core",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
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"],
@@ -140,10 +140,10 @@
140
140
  "zod": "^4.4.3"
141
141
  },
142
142
  "devDependencies": {
143
- "@powerlines/plugin-tsdown": "^0.1.590",
143
+ "@powerlines/plugin-tsdown": "^0.1.591",
144
144
  "@types/node": "^25.9.5",
145
145
  "typescript": "^6.0.3"
146
146
  },
147
147
  "publishConfig": { "access": "public" },
148
- "gitHead": "11a6e827627acf51ef0044e366fd9493f2173ec2"
148
+ "gitHead": "e5f1a6ed40a0cd566735910851df15a8a1647116"
149
149
  }