@razorwind/core 0.0.36 → 0.0.38

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-93daQRSN.cjs"),n=require("./tokens-b0f4LbvP.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.36`;function T(e){return!!((0,_.isSetString)(e)||(0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))}function E(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}const ie=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,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function ae(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function A(e){let t=e.toLowerCase();if(D.has(t))return t}function oe(e){let t=(0,p.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,_.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 se(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=E(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=O(o??{},r);return s?.length&&(d.files=s),l?.length&&(d.usage=l),Object.keys(d).length>0?d:void 0}async function ce(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 le(e){try{return(await(0,v.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,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 le(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 de(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 fe(e){let n=await se(e),r=await ce(e);if(!n&&!r)return;let i=O(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 ue(e,s.data.usage);return{...s.data,files:await de(e,s.data.files),...c?.length?{usage:c}:{}}}async function F(e){let t={},n=ae(e.options.componentsPath);for(let r of n){let n=k(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 fe((0,m.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const pe=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 me(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function he(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function z(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&I.has(t))}function ge(e){return n._.test(e)}async function B(e){try{return(await(0,v.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,g.isSetObject)(e))return;let t=pe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function U(e){return(0,g.isSetObject)(e)&&`path`in e}async function W(e,t,n){let r=(0,f.appendPath)(e,t),i=R((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 _e(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=E(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;U(a)?s=V(a):(0,g.isSetObject)(a)&&(o=H(a),`files`in a&&(s=V(a.files)));let l=L(o??{},r);return s?.length&&(l.files=s),Object.keys(l).length>0?l:void 0}async function ve(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(U(n)||Array.isArray(n)){let e=V(n);if(e)return{files:e}}return H(n)}async function ye(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??R(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 B(e);return Promise.all(n.map(t=>W(t,e)))}async function be(e){let n=await _e(e),r=await ve(e),i=await B(e);if(!n&&!r&&i.length===0)return;let a=L(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 ye(e,c.data.files)}}function G(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 xe(e,t,n){let r=await B(e);for(let i of r){let r=(0,p.findFileName)(i,{withExtension:!1});r&&G(n,r,await W(i,e,t))}}async function K(e){let t={},n=he(e.options.iconsPath);for(let r of n){let n=me(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(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?L(n,e):n}continue}if(r.isFile()&&z(r.name)){let e=(0,p.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,_.isSetString)(n)?n:void 0}function J(e){let t={};(0,_.isSetString)(e.name)&&(t.name=e.name),(0,_.isSetString)(e.description)&&(t.description=e.description),(0,_.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=E(e.repository);n&&(t.repository=n),(0,_.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,g.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=E(t.repository);a?i.name=a:(0,_.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,_.isSetString)(i.name)&&(i.title=(0,h.titleCase)(i.name)),o?i.description=o:(0,_.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:T(e.homepage)?i.homepage=E(e.homepage):T(e.author)?i.homepage=E(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&T(e.maintainers[0])?i.homepage=E(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&T(e.contributors[0])?i.homepage=E(e.contributors[0]):T(e.bugs)&&(i.homepage=E(e.bugs)),c&&(i.logo=c),l?i.repository=l:T(e.repository)&&(i.repository=E(e.repository))}return(0,o.defu)(i,t)}function Y(e){let t={};return(0,_.isSetString)(e.name)&&(t.name=e.name),(0,_.isSetString)(e.title)&&(t.title=e.title),(0,_.isSetString)(e.description)&&(t.description=e.description),(0,_.isSetString)(e.repository)&&(t.repository=e.repository),(0,_.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,_.isSetString)(e.logo)&&(t.logo=e.logo),t}async function X(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{}}return J(n)}async function Z(e,t){let n=await X(e),r=Y(t);return(0,o.defu)(r,n)}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(n,{default:!0});if(r){let i={};(0,te.isFunction)(r)?i=await Promise.resolve(r({cwd:e,mode:t.mode??`development`})):((0,g.isSetObject)(r)||Array.isArray(r))&&(i=r),((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 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 $(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={...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))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=Se,exports.definePlugin=r.definePlugin,exports.generator=Ce,exports.getRazorwindParserHooks=n.o,exports.getRazorwindPreprocessorHooks=n.s,exports.inferTypeFromPath=n.f,exports.inferValue=n.p,exports.loadComponents=F,exports.loadIcons=K,exports.loadSchemaMetaFromPackageJson=X,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.m,exports.normalizeRepository=E,exports.normalizeTokenTree=n.h,exports.parseCssCustomProperties=n.d,exports.razorwindInferPreprocessor=n.c,exports.registerRazorwindHooks=n.l,exports.registerRazorwindParsers=n.u,exports.resolveConfig=$,exports.resolveSchemaMeta=Z,exports.resolveTokensSource=n.r,exports.schemaMetaFromConfig=Y,exports.schemaMetaFromPackageJson=J,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-b0f4LbvP.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.38`;function T(e){return!!((0,_.isSetString)(e)||(0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))}function E(e){if((0,_.isSetString)(e))return e;if((0,g.isSetObject)(e)&&`url`in e&&(0,_.isSetString)(e.url))return e.url}const ie=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,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function ae(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function A(e){let t=e.toLowerCase();if(D.has(t))return t}function oe(e){let t=(0,p.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,_.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 se(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=E(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=O(o??{},r);return s?.length&&(d.files=s),l?.length&&(d.usage=l),Object.keys(d).length>0?d:void 0}async function ce(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 le(e){try{return(await(0,v.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,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 le(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 de(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 fe(e){let n=await se(e),r=await ce(e);if(!n&&!r)return;let i=O(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 ue(e,s.data.usage);return{...s.data,files:await de(e,s.data.files),...c?.length?{usage:c}:{}}}async function F(e){let t={},n=ae(e.options.componentsPath);for(let r of n){let n=k(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 fe((0,m.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const pe=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 me(e,t){return(0,y.isAbsolute)(t)?t:(0,y.resolve)(e,t)}function he(e){return Array.isArray(e)?e.filter(_.isSetString):(0,_.isSetString)(e)?[e]:[]}function R(e){let t=e.toLowerCase();if(I.has(t))return t}function z(e){let t=(0,p.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&I.has(t))}function ge(e){return n._.test(e)}async function B(e){try{return(await(0,v.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,g.isSetObject)(e))return;let t=pe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function U(e){return(0,g.isSetObject)(e)&&`path`in e}async function W(e,t,n){let r=(0,f.appendPath)(e,t),i=R((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 _e(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=E(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;U(a)?s=V(a):(0,g.isSetObject)(a)&&(o=H(a),`files`in a&&(s=V(a.files)));let l=L(o??{},r);return s?.length&&(l.files=s),Object.keys(l).length>0?l:void 0}async function ve(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(U(n)||Array.isArray(n)){let e=V(n);if(e)return{files:e}}return H(n)}async function ye(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??R(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 B(e);return Promise.all(n.map(t=>W(t,e)))}async function be(e){let n=await _e(e),r=await ve(e),i=await B(e);if(!n&&!r&&i.length===0)return;let a=L(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 ye(e,c.data.files)}}function G(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 xe(e,t,n){let r=await B(e);for(let i of r){let r=(0,p.findFileName)(i,{withExtension:!1});r&&G(n,r,await W(i,e,t))}}async function K(e){let t={},n=he(e.options.iconsPath);for(let r of n){let n=me(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(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?L(n,e):n}continue}if(r.isFile()&&z(r.name)){let e=(0,p.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,_.isSetString)(n)?n:void 0}function J(e){let t={};(0,_.isSetString)(e.name)&&(t.name=e.name),(0,_.isSetString)(e.description)&&(t.description=e.description),(0,_.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=E(e.repository);n&&(t.repository=n),(0,_.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,g.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=E(t.repository);a?i.name=a:(0,_.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,_.isSetString)(i.name)&&(i.title=(0,h.titleCase)(i.name)),o?i.description=o:(0,_.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:T(e.homepage)?i.homepage=E(e.homepage):T(e.author)?i.homepage=E(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&T(e.maintainers[0])?i.homepage=E(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&T(e.contributors[0])?i.homepage=E(e.contributors[0]):T(e.bugs)&&(i.homepage=E(e.bugs)),c&&(i.logo=c),l?i.repository=l:T(e.repository)&&(i.repository=E(e.repository))}return(0,o.defu)(i,t)}function Y(e){let t={};return(0,_.isSetString)(e.name)&&(t.name=e.name),(0,_.isSetString)(e.title)&&(t.title=e.title),(0,_.isSetString)(e.description)&&(t.description=e.description),(0,_.isSetString)(e.repository)&&(t.repository=e.repository),(0,_.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,_.isSetString)(e.logo)&&(t.logo=e.logo),t}async function X(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{}}return J(n)}async function Z(e,t){let n=await X(e),r=Y(t);return(0,o.defu)(r,n)}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(n,{default:!0});if(r){let i={};(0,te.isFunction)(r)?i=await Promise.resolve(r({cwd:e,mode:t.mode??`development`})):((0,g.isSetObject)(r)||Array.isArray(r))&&(i=r),((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 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 $(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={...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))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=Se,exports.definePlugin=r.definePlugin,exports.generator=Ce,exports.getRazorwindParserHooks=n.o,exports.getRazorwindPreprocessorHooks=n.s,exports.inferTypeFromPath=n.f,exports.inferValue=n.p,exports.loadComponents=F,exports.loadIcons=K,exports.loadSchemaMetaFromPackageJson=X,exports.loadTokens=n.t,exports.loadTokensOrThrow=n.n,exports.nestFlatTokens=n.m,exports.normalizeRepository=E,exports.normalizeTokenTree=n.h,exports.parseCssCustomProperties=n.d,exports.razorwindInferPreprocessor=n.c,exports.registerRazorwindHooks=n.l,exports.registerRazorwindParsers=n.u,exports.resolveConfig=$,exports.resolveSchemaMeta=Z,exports.resolveTokensSource=n.r,exports.schemaMetaFromConfig=Y,exports.schemaMetaFromPackageJson=J,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-buR6a6IP.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 ie,m as ae,n as oe,o as se,p as ce,r as le,s as ue,t as d,u as de,v as fe,x as pe,y as me}from"./tokens-DidKwlVV.mjs";import{definePlugin as he}from"./plugin.mjs";import{defineGenerator as ge,defineSchema as _e,useExecution as f}from"@power-plant/core";import{isEmptyObject as ve}from"@stryke/type-checks/is-empty-object";import{createDefu as ye,defu as p}from"defu";import be from"style-dictionary";import{existsSync as m}from"@stryke/fs/exists";import{isDirectory as h}from"@stryke/fs/is-file";import{readJsonFile as g}from"@stryke/fs/json";import{listFiles as xe}from"@stryke/fs/list-files";import{appendPath as _}from"@stryke/path/append";import{findFileExtensionSafe as v,findFileName as y,findFolderName as b}from"@stryke/path/file-path-fns";import{joinPaths as x}from"@stryke/path/join";import{titleCase as S}from"@stryke/string-format/title-case";import{isSetObject as C}from"@stryke/type-checks/is-set-object";import{isSetString as w}from"@stryke/type-checks/is-set-string";import{readFile as T,readdir as E}from"node:fs/promises";import{isAbsolute as D,resolve as O}from"node:path";import{getEnvPaths as Se}from"@stryke/env/get-env-paths";import{findFilePath as k}from"@stryke/path/find";import{replacePath as A}from"@stryke/path/replace";import{isFunction as Ce}from"@stryke/type-checks/is-function";import{loadConfig as j}from"c12";import{createJiti as we}from"jiti";import{existsSync as M}from"node:fs";import Te from"node:os";var Ee=`0.0.36`;function N(e){return!!(w(e)||C(e)&&`url`in e&&w(e.url))}function P(e){if(w(e))return e;if(C(e)&&`url`in e&&w(e.url))return e.url}const De=t.partial(),F=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),I=ye((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Oe(e,t){return D(t)?t:O(e,t)}function ke(e){return Array.isArray(e)?e.filter(w):w(e)?[e]:[]}function L(e){let t=e.toLowerCase();if(F.has(t))return t}function Ae(e){let t=v(e)?.toLowerCase();return!!(t&&F.has(t))}function R(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 z(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(w(t)){let e=y(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 B(e){if(!C(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 V(e){return C(e)&&`path`in e}async function je(e){let t=x(e,`package.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}let r={};w(n.name)&&(r.name=n.name,r.title=n.name),w(n.description)&&(r.description=n.description),w(n.version)&&(r.version=n.version),w(n.homepage)&&(r.homepage=n.homepage);let i=P(n.repository);if(i&&(r.repository=i),C(n.dependencies)&&(r.dependencies=n.dependencies),C(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(w);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;V(a)?s=R(a):C(a)&&(o=B(a),`files`in a&&(s=R(a.files)),`usage`in a&&(c=z(a.usage)));let l=I(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=x(e,`component.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}if(V(n)||Array.isArray(n)){let e=R(n);if(e)return{files:e}}if(!C(n))return;let r=B(n)??{},i=`files`in n?R(n.files):void 0,a=`usage`in n?z(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 E(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=_(t.path,e),r=v(t.path)??``,i=t.language??L(r),a=t.name||y(t.path,{withExtension:!1})||t.path,o=t.content===void 0?m(n)?await T(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=x(e,`usage`);if(!m(n)||!h(n))return;let r=await Ne(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=x(n,e),r=L(v(e)??``),i=y(e,{withExtension:!1})||e;return{name:i,title:S(i),path:t,content:await T(t,`utf8`),...r?{language:r}:{}}}))}async function Fe(e,t){let n=t??(await xe(e)).filter(e=>y(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(v(t))?`component`:`file`,path:t,content:await T(_(t,e),`utf8`)}:{type:/[tj]sx$/.test(v(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await T(_(t.path,e),`utf8`):void 0,path:_(t.path,e)}))}async function Ie(e){let n=await je(e),r=await Me(e);if(!n&&!r)return;let i=I(r??{},n??{}),a=w(i.name)?i.name:b(e),o=w(i.title)?i.title:S(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 H(e){let t={},n=ke(e.options.componentsPath);for(let r of n){let n=Oe(e.cwd,r);if(!(!m(n)||!h(n)))try{let e=await E(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await Ie(x(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Le=e.partial(),U=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),W=ye((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Re(e,t){return D(t)?t:O(e,t)}function ze(e){return Array.isArray(e)?e.filter(w):w(e)?[e]:[]}function G(e){let t=e.toLowerCase();if(U.has(t))return t}function K(e){let t=v(e)?.toLowerCase();return!!(t&&U.has(t))}function Be(e){return o.test(e)}async function q(e){try{return(await E(e,{withFileTypes:!0})).filter(e=>e.isFile()&&K(e.name)).map(e=>e.name)}catch{return[]}}function J(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 Y(e){if(!C(e))return;let t=Le.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function X(e){return C(e)&&`path`in e}async function Z(e,t,n){let r=_(e,t),i=G(v(e)??``)??`file`,a=i===`svg`?await T(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Ve(e){let t=x(e,`package.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}let r={};w(n.name)&&(r.name=n.name,r.title=n.name),w(n.description)&&(r.description=n.description),w(n.version)&&(r.version=n.version),w(n.homepage)&&(r.homepage=n.homepage);let i=P(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(w);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;X(a)?s=J(a):C(a)&&(o=Y(a),`files`in a&&(s=J(a.files)));let c=W(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function He(e){let t=x(e,`icon.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}if(X(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Y(n)}async function Ue(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=_(t.path,e),r=v(t.path)??``,i=t.type??G(r)??`file`,a=t.content===void 0?i===`svg`?await T(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await q(e);return Promise.all(n.map(t=>Z(t,e)))}async function We(t){let n=await Ve(t),r=await He(t),i=await q(t);if(!n&&!r&&i.length===0)return;let a=W(r??{},n??{}),o=w(a.name)?a.name:b(t),s=w(a.title)?a.title:S(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Ue(t,c.data.files)}}function Ge(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:S(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Ke(e,t,n){let r=await q(e);for(let i of r){let r=y(i,{withExtension:!1});r&&Ge(n,r,await Z(i,e,t))}}async function qe(e){let t={},n=ze(e.options.iconsPath);for(let r of n){let n=Re(e.cwd,r);if(!(!m(n)||!h(n)))try{let e=await E(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=x(n,r.name);if(r.isDirectory()){if(Be(r.name)){await Ke(e,r.name,t);continue}let n=await We(e);if(n){let e=t[n.name];t[n.name]=e?W(n,e):n}continue}if(r.isFile()&&K(r.name)){let e=y(r.name,{withExtension:!1});if(!e)continue;Ge(t,e,await Z(r.name,n))}}}catch{continue}}return t}function Q(e,t){let n=e[t];return w(n)?n:void 0}function Je(e){let t={};w(e.name)&&(t.name=e.name),w(e.description)&&(t.description=e.description),w(e.homepage)&&(t.homepage=e.homepage);let n=P(e.repository);n&&(t.repository=n),w(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(C(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=P(t.repository);a?i.name=a:w(e.name)&&(i.name=e.name),n?i.title=n:w(i.name)&&(i.title=S(i.name)),o?i.description=o:w(e.description)&&(i.description=e.description),s?i.homepage=s:N(e.homepage)?i.homepage=P(e.homepage):N(e.author)?i.homepage=P(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&N(e.maintainers[0])?i.homepage=P(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&N(e.contributors[0])?i.homepage=P(e.contributors[0]):N(e.bugs)&&(i.homepage=P(e.bugs)),c&&(i.logo=c),l?i.repository=l:N(e.repository)&&(i.repository=P(e.repository))}return p(i,t)}function Ye(e){let t={};return w(e.name)&&(t.name=e.name),w(e.title)&&(t.title=e.title),w(e.description)&&(t.description=e.description),w(e.repository)&&(t.repository=e.repository),w(e.homepage)&&(t.homepage=e.homepage),w(e.logo)&&(t.logo=e.logo),t}async function $(e){let t=x(e,`package.json`);if(!m(t))return{};let n;try{n=await g(t)}catch{return{}}return Je(n)}async function Xe(e,t){let n=await $(e),r=Ye(t);return p(r,n)}const Ze=Te.homedir();async function Qe(e,t){let n=t.configFile&&M(A(t.configFile,e))?A(t.configFile,e):t.configFile&&M(t.configFile)?t.configFile:M(x(e,`razorwind.${t.mode}.ts`))?x(e,`razorwind.${t.mode}.ts`):M(x(e,`razorwind.${t.mode}.js`))?x(e,`razorwind.${t.mode}.js`):M(x(e,`razorwind.${t.mode}.mts`))?x(e,`razorwind.${t.mode}.mts`):M(x(e,`razorwind.${t.mode}.mjs`))?x(e,`razorwind.${t.mode}.mjs`):M(x(e,`razorwind.${t.mode}.cjs`))?x(e,`razorwind.${t.mode}.cjs`):M(x(e,`razorwind.${t.mode}.cts`))?x(e,`razorwind.${t.mode}.cts`):M(x(e,`razorwind.${t.mode}.json`))?x(e,`razorwind.${t.mode}.json`):M(x(e,`razorwind.${t.mode}.yaml`))?x(e,`razorwind.${t.mode}.yaml`):M(x(e,`razorwind.${t.mode}.yml`))?x(e,`razorwind.${t.mode}.yml`):M(x(e,`razorwind.config.ts`))?x(e,`razorwind.config.ts`):M(x(e,`razorwind.config.js`))?x(e,`razorwind.config.js`):M(x(e,`razorwind.config.mts`))?x(e,`razorwind.config.mts`):M(x(e,`razorwind.config.mjs`))?x(e,`razorwind.config.mjs`):M(x(e,`razorwind.config.cjs`))?x(e,`razorwind.config.cjs`):M(x(e,`razorwind.config.cts`))?x(e,`razorwind.config.cts`):M(x(e,`razorwind.config.json`))?x(e,`razorwind.config.json`):M(x(e,`razorwind.config.yaml`))?x(e,`razorwind.config.yaml`):M(x(e,`razorwind.config.yml`))?x(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`})):(C(r)||Array.isArray(r))&&(i=r),(C(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([j({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),j({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),j({cwd:Ze,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=p({cwd:e,envPaths:{...r,home:Ze}},t,o,C(s?.config)?{...s.config}:{},C(c?.config)?{...c.config}:{},C(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:x(e,`assets/icons`),plugins:[]});if(Array.isArray(u.componentsPath)){let t=u.componentsPath.filter(w).map(e=>k(e));u.componentsPath=t.length>0?t:e}else u.componentsPath=w(u.componentsPath)?k(u.componentsPath):e;if(Array.isArray(u.iconsPath)){let t=u.iconsPath.filter(w).map(e=>k(e));u.iconsPath=t.length>0?t:x(e,`assets/icons`)}else u.iconsPath=w(u.iconsPath)?k(u.iconsPath):x(e,`assets/icons`);return Array.isArray(u.plugins)||(u.plugins=[]),u}function $e(e){return e}const et=ge({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:_e({schema:i}),input:async e=>{let t=f();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.`);ie(t.options.plugins,be);let n=t.options.tokens;(!n||ve(n))&&(n=await d(t));let r={...await Xe(t.cwd,t.options),tokens:n??{},components:p(t.options.components??{},await H(t)??{}),icons:p(t.options.icons??{},await qe(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||ve(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=f(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=p(i,n)}return n}});export{te as DEFAULT_TOKEN_PATH_CANDIDATES,s as RAZORWIND_INFER_PREPROCESSOR,o as THEME_BASENAME_PATTERN,fe as TOKEN_DIRECTORY_GLOB,me as TOKEN_FILE_EXTENSIONS,pe as TYPE_PATH_HINTS,c as WINDIE_PARSERS,c as razorwindParsers,$e as defineConfig,he as definePlugin,et as generator,se as getRazorwindParserHooks,ue as getRazorwindPreprocessorHooks,ee as inferTypeFromPath,ce as inferValue,H as loadComponents,qe as loadIcons,$ as loadSchemaMetaFromPackageJson,d as loadTokens,oe as loadTokensOrThrow,ae as nestFlatTokens,P as normalizeRepository,ne as normalizeTokenTree,u as parseCssCustomProperties,l as razorwindInferPreprocessor,ie as registerRazorwindHooks,de as registerRazorwindParsers,Qe as resolveConfig,Xe as resolveSchemaMeta,le as resolveTokensSource,Ye as schemaMetaFromConfig,Je as schemaMetaFromPackageJson,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-buR6a6IP.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 ie,m as ae,n as oe,o as se,p as ce,r as le,s as ue,t as d,u as de,v as fe,x as pe,y as me}from"./tokens-DidKwlVV.mjs";import{definePlugin as he}from"./plugin.mjs";import{defineGenerator as ge,defineSchema as _e,useExecution as f}from"@power-plant/core";import{isEmptyObject as ve}from"@stryke/type-checks/is-empty-object";import{createDefu as ye,defu as p}from"defu";import be from"style-dictionary";import{existsSync as m}from"@stryke/fs/exists";import{isDirectory as h}from"@stryke/fs/is-file";import{readJsonFile as g}from"@stryke/fs/json";import{listFiles as xe}from"@stryke/fs/list-files";import{appendPath as _}from"@stryke/path/append";import{findFileExtensionSafe as v,findFileName as y,findFolderName as b}from"@stryke/path/file-path-fns";import{joinPaths as x}from"@stryke/path/join";import{titleCase as S}from"@stryke/string-format/title-case";import{isSetObject as C}from"@stryke/type-checks/is-set-object";import{isSetString as w}from"@stryke/type-checks/is-set-string";import{readFile as T,readdir as E}from"node:fs/promises";import{isAbsolute as D,resolve as O}from"node:path";import{getEnvPaths as Se}from"@stryke/env/get-env-paths";import{findFilePath as k}from"@stryke/path/find";import{replacePath as A}from"@stryke/path/replace";import{isFunction as Ce}from"@stryke/type-checks/is-function";import{loadConfig as j}from"c12";import{createJiti as we}from"jiti";import{existsSync as M}from"node:fs";import Te from"node:os";var Ee=`0.0.38`;function N(e){return!!(w(e)||C(e)&&`url`in e&&w(e.url))}function P(e){if(w(e))return e;if(C(e)&&`url`in e&&w(e.url))return e.url}const De=t.partial(),F=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),I=ye((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Oe(e,t){return D(t)?t:O(e,t)}function ke(e){return Array.isArray(e)?e.filter(w):w(e)?[e]:[]}function L(e){let t=e.toLowerCase();if(F.has(t))return t}function Ae(e){let t=v(e)?.toLowerCase();return!!(t&&F.has(t))}function R(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 z(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(w(t)){let e=y(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 B(e){if(!C(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 V(e){return C(e)&&`path`in e}async function je(e){let t=x(e,`package.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}let r={};w(n.name)&&(r.name=n.name,r.title=n.name),w(n.description)&&(r.description=n.description),w(n.version)&&(r.version=n.version),w(n.homepage)&&(r.homepage=n.homepage);let i=P(n.repository);if(i&&(r.repository=i),C(n.dependencies)&&(r.dependencies=n.dependencies),C(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(w);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;V(a)?s=R(a):C(a)&&(o=B(a),`files`in a&&(s=R(a.files)),`usage`in a&&(c=z(a.usage)));let l=I(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=x(e,`component.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}if(V(n)||Array.isArray(n)){let e=R(n);if(e)return{files:e}}if(!C(n))return;let r=B(n)??{},i=`files`in n?R(n.files):void 0,a=`usage`in n?z(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 E(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=_(t.path,e),r=v(t.path)??``,i=t.language??L(r),a=t.name||y(t.path,{withExtension:!1})||t.path,o=t.content===void 0?m(n)?await T(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=x(e,`usage`);if(!m(n)||!h(n))return;let r=await Ne(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=x(n,e),r=L(v(e)??``),i=y(e,{withExtension:!1})||e;return{name:i,title:S(i),path:t,content:await T(t,`utf8`),...r?{language:r}:{}}}))}async function Fe(e,t){let n=t??(await xe(e)).filter(e=>y(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(v(t))?`component`:`file`,path:t,content:await T(_(t,e),`utf8`)}:{type:/[tj]sx$/.test(v(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await T(_(t.path,e),`utf8`):void 0,path:_(t.path,e)}))}async function Ie(e){let n=await je(e),r=await Me(e);if(!n&&!r)return;let i=I(r??{},n??{}),a=w(i.name)?i.name:b(e),o=w(i.title)?i.title:S(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 H(e){let t={},n=ke(e.options.componentsPath);for(let r of n){let n=Oe(e.cwd,r);if(!(!m(n)||!h(n)))try{let e=await E(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await Ie(x(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const Le=e.partial(),U=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),W=ye((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function Re(e,t){return D(t)?t:O(e,t)}function ze(e){return Array.isArray(e)?e.filter(w):w(e)?[e]:[]}function G(e){let t=e.toLowerCase();if(U.has(t))return t}function K(e){let t=v(e)?.toLowerCase();return!!(t&&U.has(t))}function Be(e){return o.test(e)}async function q(e){try{return(await E(e,{withFileTypes:!0})).filter(e=>e.isFile()&&K(e.name)).map(e=>e.name)}catch{return[]}}function J(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 Y(e){if(!C(e))return;let t=Le.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function X(e){return C(e)&&`path`in e}async function Z(e,t,n){let r=_(e,t),i=G(v(e)??``)??`file`,a=i===`svg`?await T(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Ve(e){let t=x(e,`package.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}let r={};w(n.name)&&(r.name=n.name,r.title=n.name),w(n.description)&&(r.description=n.description),w(n.version)&&(r.version=n.version),w(n.homepage)&&(r.homepage=n.homepage);let i=P(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(w);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;X(a)?s=J(a):C(a)&&(o=Y(a),`files`in a&&(s=J(a.files)));let c=W(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function He(e){let t=x(e,`icon.json`);if(!m(t))return;let n;try{n=await g(t)}catch{return}if(X(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Y(n)}async function Ue(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=_(t.path,e),r=v(t.path)??``,i=t.type??G(r)??`file`,a=t.content===void 0?i===`svg`?await T(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await q(e);return Promise.all(n.map(t=>Z(t,e)))}async function We(t){let n=await Ve(t),r=await He(t),i=await q(t);if(!n&&!r&&i.length===0)return;let a=W(r??{},n??{}),o=w(a.name)?a.name:b(t),s=w(a.title)?a.title:S(o),c=e.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Ue(t,c.data.files)}}function Ge(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:S(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Ke(e,t,n){let r=await q(e);for(let i of r){let r=y(i,{withExtension:!1});r&&Ge(n,r,await Z(i,e,t))}}async function qe(e){let t={},n=ze(e.options.iconsPath);for(let r of n){let n=Re(e.cwd,r);if(!(!m(n)||!h(n)))try{let e=await E(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=x(n,r.name);if(r.isDirectory()){if(Be(r.name)){await Ke(e,r.name,t);continue}let n=await We(e);if(n){let e=t[n.name];t[n.name]=e?W(n,e):n}continue}if(r.isFile()&&K(r.name)){let e=y(r.name,{withExtension:!1});if(!e)continue;Ge(t,e,await Z(r.name,n))}}}catch{continue}}return t}function Q(e,t){let n=e[t];return w(n)?n:void 0}function Je(e){let t={};w(e.name)&&(t.name=e.name),w(e.description)&&(t.description=e.description),w(e.homepage)&&(t.homepage=e.homepage);let n=P(e.repository);n&&(t.repository=n),w(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(C(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=P(t.repository);a?i.name=a:w(e.name)&&(i.name=e.name),n?i.title=n:w(i.name)&&(i.title=S(i.name)),o?i.description=o:w(e.description)&&(i.description=e.description),s?i.homepage=s:N(e.homepage)?i.homepage=P(e.homepage):N(e.author)?i.homepage=P(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&N(e.maintainers[0])?i.homepage=P(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&N(e.contributors[0])?i.homepage=P(e.contributors[0]):N(e.bugs)&&(i.homepage=P(e.bugs)),c&&(i.logo=c),l?i.repository=l:N(e.repository)&&(i.repository=P(e.repository))}return p(i,t)}function Ye(e){let t={};return w(e.name)&&(t.name=e.name),w(e.title)&&(t.title=e.title),w(e.description)&&(t.description=e.description),w(e.repository)&&(t.repository=e.repository),w(e.homepage)&&(t.homepage=e.homepage),w(e.logo)&&(t.logo=e.logo),t}async function $(e){let t=x(e,`package.json`);if(!m(t))return{};let n;try{n=await g(t)}catch{return{}}return Je(n)}async function Xe(e,t){let n=await $(e),r=Ye(t);return p(r,n)}const Ze=Te.homedir();async function Qe(e,t){let n=t.configFile&&M(A(t.configFile,e))?A(t.configFile,e):t.configFile&&M(t.configFile)?t.configFile:M(x(e,`razorwind.${t.mode}.ts`))?x(e,`razorwind.${t.mode}.ts`):M(x(e,`razorwind.${t.mode}.js`))?x(e,`razorwind.${t.mode}.js`):M(x(e,`razorwind.${t.mode}.mts`))?x(e,`razorwind.${t.mode}.mts`):M(x(e,`razorwind.${t.mode}.mjs`))?x(e,`razorwind.${t.mode}.mjs`):M(x(e,`razorwind.${t.mode}.cjs`))?x(e,`razorwind.${t.mode}.cjs`):M(x(e,`razorwind.${t.mode}.cts`))?x(e,`razorwind.${t.mode}.cts`):M(x(e,`razorwind.${t.mode}.json`))?x(e,`razorwind.${t.mode}.json`):M(x(e,`razorwind.${t.mode}.yaml`))?x(e,`razorwind.${t.mode}.yaml`):M(x(e,`razorwind.${t.mode}.yml`))?x(e,`razorwind.${t.mode}.yml`):M(x(e,`razorwind.config.ts`))?x(e,`razorwind.config.ts`):M(x(e,`razorwind.config.js`))?x(e,`razorwind.config.js`):M(x(e,`razorwind.config.mts`))?x(e,`razorwind.config.mts`):M(x(e,`razorwind.config.mjs`))?x(e,`razorwind.config.mjs`):M(x(e,`razorwind.config.cjs`))?x(e,`razorwind.config.cjs`):M(x(e,`razorwind.config.cts`))?x(e,`razorwind.config.cts`):M(x(e,`razorwind.config.json`))?x(e,`razorwind.config.json`):M(x(e,`razorwind.config.yaml`))?x(e,`razorwind.config.yaml`):M(x(e,`razorwind.config.yml`))?x(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`})):(C(r)||Array.isArray(r))&&(i=r),(C(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([j({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),j({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),j({cwd:Ze,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=p({cwd:e,envPaths:{...r,home:Ze}},t,o,C(s?.config)?{...s.config}:{},C(c?.config)?{...c.config}:{},C(l?.config)?{...l.config}:{},{componentsPath:e,iconsPath:x(e,`assets/icons`),plugins:[]});if(Array.isArray(u.componentsPath)){let t=u.componentsPath.filter(w).map(e=>k(e));u.componentsPath=t.length>0?t:e}else u.componentsPath=w(u.componentsPath)?k(u.componentsPath):e;if(Array.isArray(u.iconsPath)){let t=u.iconsPath.filter(w).map(e=>k(e));u.iconsPath=t.length>0?t:x(e,`assets/icons`)}else u.iconsPath=w(u.iconsPath)?k(u.iconsPath):x(e,`assets/icons`);return Array.isArray(u.plugins)||(u.plugins=[]),u}function $e(e){return e}const et=ge({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:_e({schema:i}),input:async e=>{let t=f();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.`);ie(t.options.plugins,be);let n=t.options.tokens;(!n||ve(n))&&(n=await d(t));let r={...await Xe(t.cwd,t.options),tokens:n??{},components:p(t.options.components??{},await H(t)??{}),icons:p(t.options.icons??{},await qe(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||ve(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=f(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=p(i,n)}return n}});export{te as DEFAULT_TOKEN_PATH_CANDIDATES,s as RAZORWIND_INFER_PREPROCESSOR,o as THEME_BASENAME_PATTERN,fe as TOKEN_DIRECTORY_GLOB,me as TOKEN_FILE_EXTENSIONS,pe as TYPE_PATH_HINTS,c as WINDIE_PARSERS,c as razorwindParsers,$e as defineConfig,he as definePlugin,et as generator,se as getRazorwindParserHooks,ue as getRazorwindPreprocessorHooks,ee as inferTypeFromPath,ce as inferValue,H as loadComponents,qe as loadIcons,$ as loadSchemaMetaFromPackageJson,d as loadTokens,oe as loadTokensOrThrow,ae as nestFlatTokens,P as normalizeRepository,ne as normalizeTokenTree,u as parseCssCustomProperties,l as razorwindInferPreprocessor,ie as registerRazorwindHooks,de as registerRazorwindParsers,Qe as resolveConfig,Xe as resolveSchemaMeta,le as resolveTokensSource,Ye as schemaMetaFromConfig,Je as schemaMetaFromPackageJson,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.36",
3
+ "version": "0.0.38",
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": "381cbfccea58c36fa769ae93c679e33832f8236c"
148
+ "gitHead": "8472dae6d5e277e8985c8ff0949e4780a1934689"
149
149
  }