@razorwind/core 0.0.58 → 0.0.59
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 +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-gLQ_OAIF.cjs"),n=require("./schema-BCofDJWf.cjs"),r=require("./fonts-CkBPEFie.cjs"),i=require("./tokens-D4CY3bSO.cjs"),a=require("./plugin.cjs");let o=require("@power-plant/core"),s=require("defu"),c=require("node:path"),l=require("@stryke/string-format/title-case"),u=require("@stryke/fs/exists"),d=require("@stryke/fs/is-file"),f=require("@stryke/fs/json"),p=require("@stryke/fs/list-files"),m=require("@stryke/path/append"),h=require("@stryke/path/file-path-fns"),g=require("@stryke/path/join"),_=require("@stryke/type-checks/is-set-object"),v=require("@stryke/type-checks/is-set-string"),y=require("node:fs/promises"),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);function T(e){let n=t._(e),r=n.filter(e=>!t.h(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function re(e,n){let r=e.find(e=>e.id===t.f);return!r||t.h(n.id)?n.tokens:t.d(n.tokens,r.tokens)}function ie(e,n,r){return{...e,theme:n.id,title:t.c(e.title,n.id)??e.title,tokens:re(r,n)}}function ae(e,n){let r=t.c(e.title,n.id);return r?{...e,title:r}:e}async function E(e,t,n=t.plugins.filter(e=>e.generate)){let r={};for(let i of n){let n=await i.generate(e,t);r=(0,s.defu)(n,r)}return r}function D(e){return e.themeGeneration===`combined`}async function O(e,n){let r=n.plugins.filter(e=>e.generate),i=r.filter(D),a=r.filter(e=>!D(e)),o={};i.length>0&&(o=(0,s.defu)(await E(e,n,i),o));let c=t._(e.tokens),l=T(e.tokens);if(a.length===0)return o;if(l.length===0)return(0,s.defu)(await E(e,n,a),o);for(let r of l){let i=await E(ie(e,r,c),ae(n,r),a);o=(0,s.defu)(t.s(i,r.id),o)}return o}async function k(e){let t={};for(let n of e)Object.assign(t,await O(n.spec,n.config));return t}function A(e){return!!((0,v.isSetString)(e)||(0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))}function j(e){if((0,v.isSetString)(e))return e;if((0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))return e.url}const oe=n.o.partial(),M=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),se=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ce(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function le(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function N(e){let t=e.toLowerCase();if(M.has(t))return t}function ue(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&M.has(t))}function P(e){if(!e)return;let t=n.a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.a.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function F(e){if(!e)return;let t=n.s.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){if((0,v.isSetString)(t)){let e=(0,h.findFileName)(t,{withExtension:!1})||t,i=n.s.safeParse({name:e,path:t});i.success&&r.push(i.data);continue}let e=n.s.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function I(e){if(!(0,_.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=oe.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function L(e){return(0,_.isSetObject)(e)&&`path`in e}async function de(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=j(n.repository);if(i&&(r.repository=i),(0,_.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,_.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;L(a)?s=P(a):(0,_.isSetObject)(a)&&(o=I(a),`files`in a&&(s=P(a.files)),`usage`in a&&(c=F(a.usage)));let l=se(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function fe(e){let t=(0,g.joinPaths)(e,`component.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(L(n)||Array.isArray(n)){let e=P(n);if(e)return{files:e}}if(!(0,_.isSetObject)(n))return;let r=I(n)??{},i=`files`in n?P(n.files):void 0,a=`usage`in n?F(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 pe(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ue(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=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.language??N(r),a=t.name||(0,h.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content??((0,u.existsSync)(n)?await(0,y.readFile)(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,g.joinPaths)(e,`usage`);if(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n))return;let r=await pe(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,g.joinPaths)(n,e),r=N((0,h.findFileExtensionSafe)(e)??``),i=(0,h.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,l.titleCase)(i),path:t,content:await(0,y.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function he(e,t){let n=t??(await(0,p.listFiles)(e)).filter(e=>(0,h.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,y.readFile)((0,m.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,y.readFile)((0,m.appendPath)(t.path,e),`utf8`):void 0,path:(0,m.appendPath)(t.path,e)}))}async function ge(e){let t=await de(e),r=await fe(e);if(!t&&!r)return;let i=se(r??{},t??{}),a=(0,v.isSetString)(i.name)?i.name:(0,h.findFolderName)(e),o=(0,v.isSetString)(i.title)?i.title:(0,l.titleCase)(a),s=n.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await me(e,s.data.usage);return{...s.data,files:await he(e,s.data.files),...c?.length?{usage:c}:{}}}async function R(e){let t={},n=le(e.options.componentsPath);for(let r of n){let n=ce(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await ge((0,g.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const _e=n.r.partial(),z=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),B=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ve(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function ye(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function V(e){let t=e.toLowerCase();if(z.has(t))return t}function H(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&z.has(t))}function be(e){return i.x.test(e)}async function U(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&H(e.name)).map(e=>e.name)}catch{return[]}}function W(e){if(!e)return;let t=n.n.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.n.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function G(e){if(!(0,_.isSetObject)(e))return;let t=_e.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function K(e){return(0,_.isSetObject)(e)&&`path`in e}async function q(e,t,n){let r=(0,m.appendPath)(e,t),i=V((0,h.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,y.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function xe(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=j(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;K(a)?s=W(a):(0,_.isSetObject)(a)&&(o=G(a),`files`in a&&(s=W(a.files)));let c=B(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Se(e){let t=(0,g.joinPaths)(e,`icon.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(K(n)||Array.isArray(n)){let e=W(n);if(e)return{files:e}}return G(n)}async function Ce(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.type??V(r)??`file`,a=t.content===void 0?i===`svg`?await(0,y.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await U(e);return Promise.all(n.map(t=>q(t,e)))}async function we(e){let t=await xe(e),r=await Se(e),i=await U(e);if(!t&&!r&&i.length===0)return;let a=B(r??{},t??{}),o=(0,v.isSetString)(a.name)?a.name:(0,h.findFolderName)(e),s=(0,v.isSetString)(a.title)?a.title:(0,l.titleCase)(o),c=n.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Ce(e,c.data.files)}}function J(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,l.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 Te(e,t,n){let r=await U(e);for(let i of r){let r=(0,h.findFileName)(i,{withExtension:!1});r&&J(n,r,await q(i,e,t))}}async function Y(e){let t={},n=ye(e.options.iconsPath);for(let r of n){let n=ve(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,g.joinPaths)(n,r.name);if(r.isDirectory()){if(be(r.name)){await Te(e,r.name,t);continue}let n=await we(e);if(n){let e=t[n.name];t[n.name]=e?B(n,e):n}continue}if(r.isFile()&&H(r.name)){let e=(0,h.findFileName)(r.name,{withExtension:!1});if(!e)continue;J(t,e,await q(r.name,n))}}}catch{continue}}return t}function X(e,t){let n=e[t];return(0,v.isSetString)(n)?n:void 0}function Z(e){let t={};(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=j(e.repository);n&&(t.repository=n),(0,v.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,_.isSetObject)(r)){let t=r,n=X(t,`title`),a=X(t,`name`),o=X(t,`description`),s=X(t,`homepage`),c=X(t,`logo`),u=j(t.repository);a?i.name=a:(0,v.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,v.isSetString)(i.name)&&(i.title=(0,l.titleCase)(i.name)),o?i.description=o:(0,v.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:A(e.homepage)?i.homepage=j(e.homepage):A(e.author)?i.homepage=j(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&A(e.maintainers[0])?i.homepage=j(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&A(e.contributors[0])?i.homepage=j(e.contributors[0]):A(e.bugs)&&(i.homepage=j(e.bugs)),c&&(i.logo=c),u?i.repository=u:A(e.repository)&&(i.repository=j(e.repository))}return(0,s.defu)(i,t)}function Ee(e){let t={};return(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.title)&&(t.title=e.title),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.repository)&&(t.repository=e.repository),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,v.isSetString)(e.logo)&&(t.logo=e.logo),t}async function De(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return{};let n;try{n=await(0,f.readJsonFile)(t)}catch{return{}}return Z(n)}async function Oe(e,t){let n=await De(e),r=Ee(t);return(0,s.defu)(r,n)}function ke(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Ae=w.default.homedir();function je(e){return Array.isArray(e)?e.filter(e=>(0,_.isSetObject)(e)):[]}function Q(e){return Array.isArray(e)||!(0,_.isSetObject)(e)?{}:{...e}}const Me=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Ne(e,t){let n={...e};for(let e of Me)t[e]!=null&&delete n[e];return n}function Pe(e,t,n,r){let i=(0,s.defu)({cwd:e,envPaths:r.envPaths},Ne(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:(0,g.joinPaths)(e,`assets/icons`),fontsPath:(0,g.joinPaths)(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=(0,v.isSetString)(i.componentsPath)?(0,b.findFilePath)(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.iconsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/icons`)}else i.iconsPath=(0,v.isSetString)(i.iconsPath)?(0,b.findFilePath)(i.iconsPath):(0,g.joinPaths)(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.fontsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/fonts`)}else i.fontsPath=(0,v.isSetString)(i.fontsPath)?(0,b.findFilePath)(i.fontsPath):(0,g.joinPaths)(e,`assets/fonts`);return i.plugins=ke(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}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,g.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.ts`))?(0,g.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.js`))?(0,g.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mts`))?(0,g.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mjs`))?(0,g.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cjs`))?(0,g.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cts`))?(0,g.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.json`))?(0,g.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yaml`))?(0,g.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yml`))?(0,g.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),o=[{}];if(n){let r=(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=(0,te.isFunction)(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=je(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else(0,_.isSetObject)(r)&&(o=[{...r,configFile:n}])}}let[s,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:Ae,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=Q(s?.config),f=n?(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n):void 0,p=typeof s?.configFile==`string`?s.configFile:void 0;f&&p&&(0,c.resolve)(e,p)===f&&delete d.plugins;let m={envPaths:{...r,home:Ae},workspaceLayer:d,environmentLayer:Q(l?.config),homeLayer:Q(u?.config)};return o.map(n=>Pe(e,t,n,m))}async function Fe(e,t){let n=(await $(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Ie(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||i.t(t))&&(t=await i.n(e));let n={...await Oe(e.cwd,e.options),tokens:t??{},components:(0,s.defu)(e.options.components??{},await R(e)??{}),icons:(0,s.defu)(e.options.icons??{},await Y(e)??{}),fonts:(0,s.defu)(e.options.fonts??{},await r.a(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||i.t(n.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 t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Le(e,t){let n=await $(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Ie(e),config:t});return r}async function Re(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=(0,c.isAbsolute)(e)?e:(0,c.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,y.mkdir)((0,c.dirname)(a),{recursive:!0}),await(0,y.writeFile)(a,o,`utf8`),n.push(a)}return n}var ze=`0.0.58`;function Be(e){return e}const Ve=(0,o.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:ze,tags:[`razorwind`,`dtcg`]},schema:(0,o.defineSchema)({schema:n.t}),input:async e=>{let t=(0,o.useExecution)(),n=await Le(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await Re(n,(0,o.useExecution)().cwd)},generator:async e=>{let t=(0,o.useExecution)();return k(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=i.b,exports.FONT_EXTENSIONS=r.h,exports.FONT_FORMAT_FROM_EXTENSION=r.g,exports.GENERIC_FALLBACK_FROM_ROLE=r._,exports.MONO_ROLES=r.v,exports.RAZORWIND_INFER_PREPROCESSOR=i.o,exports.SANS_ROLES=r.y,exports.THEME_BASENAME_PATTERN=i.x,exports.TOKEN_DIRECTORY_GLOB=i.S,exports.TOKEN_FILE_EXTENSIONS=i.C,exports.TYPE_ALIASES=i.T,exports.TYPE_PATH_HINTS=i.E,exports.WEIGHT_FROM_SUFFIX=r.b,exports.WINDIE_PARSERS=i.w,exports.razorwindParsers=i.w,exports.canonicalizeTokenType=i.D,exports.collectCssCustomProperties=i.m,exports.copyFontFiles=r.m,exports.cssFontFamily=r.s,exports.defineConfig=Be,exports.definePlugin=a.definePlugin,exports.fontFamilyName=r.c,exports.generateAllPluginDocuments=k,exports.generatePluginDocuments=O,exports.generator=Ve,exports.getExtractionHooks=i.s,exports.getRazorwindParserHooks=i.c,exports.getRazorwindPreprocessorHooks=i.l,exports.inferTypeFromPath=i.g,exports.inferValue=i._,exports.isEmptyFonts=r.t,exports.isEmptyTokens=i.t,exports.loadComponents=R,exports.loadFonts=r.a,exports.loadIcons=Y,exports.loadSchemaMetaFromPackageJson=De,exports.loadTokens=i.n,exports.loadTokensOrThrow=i.r,exports.mergeFonts=r.n,exports.nestFlatTokens=i.v,exports.normalizeRepository=j,exports.normalizeTokenTree=i.y,exports.parseCssCustomProperties=i.h,exports.parseCssFonts=r.r,exports.parseFontFilename=r.o,exports.pickFontByRole=r.i,exports.prepareGenerationRuns=Le,exports.prepareSpec=Ie,exports.prependFontCss=r.l,exports.razorwindInferPreprocessor=i.u,exports.registerRazorwindHooks=i.d,exports.registerRazorwindParsers=i.f,exports.renderFontCss=r.u,exports.renderGoogleFontImports=r.d,exports.renderLocalFontFaces=r.f,exports.resolveConfig=Fe,exports.resolveConfigs=$,exports.resolveSchemaMeta=Oe,exports.resolveTokensSource=i.i,exports.schemaMetaFromConfig=Ee,exports.schemaMetaFromPackageJson=Z,exports.styleDictionaryLogOptions=i.p,exports.themeKeyFromPath=i.a,exports.themesForGeneration=T,exports.toGoogleFontsCssUrl=r.p,exports.uniquePlugins=ke,exports.writeGeneratedDocuments=Re;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-gLQ_OAIF.cjs"),n=require("./schema-BCofDJWf.cjs"),r=require("./fonts-CkBPEFie.cjs"),i=require("./tokens-D4CY3bSO.cjs"),a=require("./plugin.cjs");let o=require("@power-plant/core"),s=require("defu"),c=require("node:path"),l=require("@stryke/string-format/title-case"),u=require("@stryke/fs/exists"),d=require("@stryke/fs/is-file"),f=require("@stryke/fs/json"),p=require("@stryke/fs/list-files"),m=require("@stryke/path/append"),h=require("@stryke/path/file-path-fns"),g=require("@stryke/path/join"),_=require("@stryke/type-checks/is-set-object"),v=require("@stryke/type-checks/is-set-string"),y=require("node:fs/promises"),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);function T(e){let n=t._(e),r=n.filter(e=>!t.h(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function re(e,n){let r=e.find(e=>e.id===t.f);return!r||t.h(n.id)?n.tokens:t.d(n.tokens,r.tokens)}function ie(e,n,r){return{...e,theme:n.id,title:t.c(e.title,n.id)??e.title,tokens:re(r,n)}}function ae(e,n){let r=t.c(e.title,n.id);return r?{...e,title:r}:e}async function E(e,t,n=t.plugins.filter(e=>e.generate)){let r={};for(let i of n){let n=await i.generate(e,t);r=(0,s.defu)(n,r)}return r}function D(e){return e.themeGeneration===`combined`}async function O(e,n){let r=n.plugins.filter(e=>e.generate),i=r.filter(D),a=r.filter(e=>!D(e)),o={};i.length>0&&(o=(0,s.defu)(await E(e,n,i),o));let c=t._(e.tokens),l=T(e.tokens);if(a.length===0)return o;if(l.length===0)return(0,s.defu)(await E(e,n,a),o);for(let r of l){let i=await E(ie(e,r,c),ae(n,r),a);o=(0,s.defu)(t.s(i,r.id),o)}return o}async function k(e){let t={};for(let n of e)Object.assign(t,await O(n.spec,n.config));return t}function A(e){return!!((0,v.isSetString)(e)||(0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))}function j(e){if((0,v.isSetString)(e))return e;if((0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))return e.url}const oe=n.o.partial(),M=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),se=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ce(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function le(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function N(e){let t=e.toLowerCase();if(M.has(t))return t}function ue(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&M.has(t))}function P(e){if(!e)return;let t=n.a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.a.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function F(e){if(!e)return;let t=n.s.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){if((0,v.isSetString)(t)){let e=(0,h.findFileName)(t,{withExtension:!1})||t,i=n.s.safeParse({name:e,path:t});i.success&&r.push(i.data);continue}let e=n.s.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function I(e){if(!(0,_.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=oe.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function L(e){return(0,_.isSetObject)(e)&&`path`in e}async function de(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=j(n.repository);if(i&&(r.repository=i),(0,_.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,_.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;L(a)?s=P(a):(0,_.isSetObject)(a)&&(o=I(a),`files`in a&&(s=P(a.files)),`usage`in a&&(c=F(a.usage)));let l=se(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function fe(e){let t=(0,g.joinPaths)(e,`component.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(L(n)||Array.isArray(n)){let e=P(n);if(e)return{files:e}}if(!(0,_.isSetObject)(n))return;let r=I(n)??{},i=`files`in n?P(n.files):void 0,a=`usage`in n?F(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 pe(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ue(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=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.language??N(r),a=t.name||(0,h.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content??((0,u.existsSync)(n)?await(0,y.readFile)(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,g.joinPaths)(e,`usage`);if(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n))return;let r=await pe(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,g.joinPaths)(n,e),r=N((0,h.findFileExtensionSafe)(e)??``),i=(0,h.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,l.titleCase)(i),path:t,content:await(0,y.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function he(e,t){let n=t??(await(0,p.listFiles)(e)).filter(e=>(0,h.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,y.readFile)((0,m.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,y.readFile)((0,m.appendPath)(t.path,e),`utf8`):void 0,path:(0,m.appendPath)(t.path,e)}))}async function ge(e){let t=await de(e),r=await fe(e);if(!t&&!r)return;let i=se(r??{},t??{}),a=(0,v.isSetString)(i.name)?i.name:(0,h.findFolderName)(e),o=(0,v.isSetString)(i.title)?i.title:(0,l.titleCase)(a),s=n.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await me(e,s.data.usage);return{...s.data,files:await he(e,s.data.files),...c?.length?{usage:c}:{}}}async function R(e){let t={},n=le(e.options.componentsPath);for(let r of n){let n=ce(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await ge((0,g.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const _e=n.r.partial(),z=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),B=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ve(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function ye(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function V(e){let t=e.toLowerCase();if(z.has(t))return t}function H(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&z.has(t))}function be(e){return i.x.test(e)}async function U(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&H(e.name)).map(e=>e.name)}catch{return[]}}function W(e){if(!e)return;let t=n.n.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.n.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function G(e){if(!(0,_.isSetObject)(e))return;let t=_e.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function K(e){return(0,_.isSetObject)(e)&&`path`in e}async function q(e,t,n){let r=(0,m.appendPath)(e,t),i=V((0,h.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,y.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function xe(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=j(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;K(a)?s=W(a):(0,_.isSetObject)(a)&&(o=G(a),`files`in a&&(s=W(a.files)));let c=B(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Se(e){let t=(0,g.joinPaths)(e,`icon.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(K(n)||Array.isArray(n)){let e=W(n);if(e)return{files:e}}return G(n)}async function Ce(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.type??V(r)??`file`,a=t.content===void 0?i===`svg`?await(0,y.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await U(e);return Promise.all(n.map(t=>q(t,e)))}async function we(e){let t=await xe(e),r=await Se(e),i=await U(e);if(!t&&!r&&i.length===0)return;let a=B(r??{},t??{}),o=(0,v.isSetString)(a.name)?a.name:(0,h.findFolderName)(e),s=(0,v.isSetString)(a.title)?a.title:(0,l.titleCase)(o),c=n.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Ce(e,c.data.files)}}function J(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,l.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 Te(e,t,n){let r=await U(e);for(let i of r){let r=(0,h.findFileName)(i,{withExtension:!1});r&&J(n,r,await q(i,e,t))}}async function Y(e){let t={},n=ye(e.options.iconsPath);for(let r of n){let n=ve(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,g.joinPaths)(n,r.name);if(r.isDirectory()){if(be(r.name)){await Te(e,r.name,t);continue}let n=await we(e);if(n){let e=t[n.name];t[n.name]=e?B(n,e):n}continue}if(r.isFile()&&H(r.name)){let e=(0,h.findFileName)(r.name,{withExtension:!1});if(!e)continue;J(t,e,await q(r.name,n))}}}catch{continue}}return t}function X(e,t){let n=e[t];return(0,v.isSetString)(n)?n:void 0}function Z(e){let t={};(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=j(e.repository);n&&(t.repository=n),(0,v.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,_.isSetObject)(r)){let t=r,n=X(t,`title`),a=X(t,`name`),o=X(t,`description`),s=X(t,`homepage`),c=X(t,`logo`),u=j(t.repository);a?i.name=a:(0,v.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,v.isSetString)(i.name)&&(i.title=(0,l.titleCase)(i.name)),o?i.description=o:(0,v.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:A(e.homepage)?i.homepage=j(e.homepage):A(e.author)?i.homepage=j(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&A(e.maintainers[0])?i.homepage=j(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&A(e.contributors[0])?i.homepage=j(e.contributors[0]):A(e.bugs)&&(i.homepage=j(e.bugs)),c&&(i.logo=c),u?i.repository=u:A(e.repository)&&(i.repository=j(e.repository))}return(0,s.defu)(i,t)}function Ee(e){let t={};return(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.title)&&(t.title=e.title),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.repository)&&(t.repository=e.repository),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,v.isSetString)(e.logo)&&(t.logo=e.logo),t}async function De(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return{};let n;try{n=await(0,f.readJsonFile)(t)}catch{return{}}return Z(n)}async function Oe(e,t){let n=await De(e),r=Ee(t);return(0,s.defu)(r,n)}function ke(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Ae=w.default.homedir();function je(e){return Array.isArray(e)?e.filter(e=>(0,_.isSetObject)(e)):[]}function Q(e){return Array.isArray(e)||!(0,_.isSetObject)(e)?{}:{...e}}const Me=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Ne(e,t){let n={...e};for(let e of Me)t[e]!=null&&delete n[e];return n}function Pe(e,t,n,r){let i=(0,s.defu)({cwd:e,envPaths:r.envPaths},Ne(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:(0,g.joinPaths)(e,`assets/icons`),fontsPath:(0,g.joinPaths)(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=(0,v.isSetString)(i.componentsPath)?(0,b.findFilePath)(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.iconsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/icons`)}else i.iconsPath=(0,v.isSetString)(i.iconsPath)?(0,b.findFilePath)(i.iconsPath):(0,g.joinPaths)(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.fontsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/fonts`)}else i.fontsPath=(0,v.isSetString)(i.fontsPath)?(0,b.findFilePath)(i.fontsPath):(0,g.joinPaths)(e,`assets/fonts`);return i.plugins=ke(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}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,g.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.ts`))?(0,g.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.js`))?(0,g.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mts`))?(0,g.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mjs`))?(0,g.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cjs`))?(0,g.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cts`))?(0,g.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.json`))?(0,g.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yaml`))?(0,g.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yml`))?(0,g.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),o=[{}];if(n){let r=(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=(0,te.isFunction)(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=je(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else(0,_.isSetObject)(r)&&(o=[{...r,configFile:n}])}}let[s,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:Ae,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=Q(s?.config),f=n?(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n):void 0,p=typeof s?.configFile==`string`?s.configFile:void 0;f&&p&&(0,c.resolve)(e,p)===f&&delete d.plugins;let m={envPaths:{...r,home:Ae},workspaceLayer:d,environmentLayer:Q(l?.config),homeLayer:Q(u?.config)};return o.map(n=>Pe(e,t,n,m))}async function Fe(e,t){let n=(await $(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Ie(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||i.t(t))&&(t=await i.n(e));let n={...await Oe(e.cwd,e.options),tokens:t??{},components:(0,s.defu)(e.options.components??{},await R(e)??{}),icons:(0,s.defu)(e.options.icons??{},await Y(e)??{}),fonts:(0,s.defu)(e.options.fonts??{},await r.a(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||i.t(n.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 t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Le(e,t){let n=await $(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Ie(e),config:t});return r}async function Re(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=(0,c.isAbsolute)(e)?e:(0,c.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,y.mkdir)((0,c.dirname)(a),{recursive:!0}),await(0,y.writeFile)(a,o,`utf8`),n.push(a)}return n}var ze=`0.0.59`;function Be(e){return e}const Ve=(0,o.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:ze,tags:[`razorwind`,`dtcg`]},schema:(0,o.defineSchema)({schema:n.t}),input:async e=>{let t=(0,o.useExecution)(),n=await Le(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await Re(n,(0,o.useExecution)().cwd)},generator:async e=>{let t=(0,o.useExecution)();return k(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=i.b,exports.FONT_EXTENSIONS=r.h,exports.FONT_FORMAT_FROM_EXTENSION=r.g,exports.GENERIC_FALLBACK_FROM_ROLE=r._,exports.MONO_ROLES=r.v,exports.RAZORWIND_INFER_PREPROCESSOR=i.o,exports.SANS_ROLES=r.y,exports.THEME_BASENAME_PATTERN=i.x,exports.TOKEN_DIRECTORY_GLOB=i.S,exports.TOKEN_FILE_EXTENSIONS=i.C,exports.TYPE_ALIASES=i.T,exports.TYPE_PATH_HINTS=i.E,exports.WEIGHT_FROM_SUFFIX=r.b,exports.WINDIE_PARSERS=i.w,exports.razorwindParsers=i.w,exports.canonicalizeTokenType=i.D,exports.collectCssCustomProperties=i.m,exports.copyFontFiles=r.m,exports.cssFontFamily=r.s,exports.defineConfig=Be,exports.definePlugin=a.definePlugin,exports.fontFamilyName=r.c,exports.generateAllPluginDocuments=k,exports.generatePluginDocuments=O,exports.generator=Ve,exports.getExtractionHooks=i.s,exports.getRazorwindParserHooks=i.c,exports.getRazorwindPreprocessorHooks=i.l,exports.inferTypeFromPath=i.g,exports.inferValue=i._,exports.isEmptyFonts=r.t,exports.isEmptyTokens=i.t,exports.loadComponents=R,exports.loadFonts=r.a,exports.loadIcons=Y,exports.loadSchemaMetaFromPackageJson=De,exports.loadTokens=i.n,exports.loadTokensOrThrow=i.r,exports.mergeFonts=r.n,exports.nestFlatTokens=i.v,exports.normalizeRepository=j,exports.normalizeTokenTree=i.y,exports.parseCssCustomProperties=i.h,exports.parseCssFonts=r.r,exports.parseFontFilename=r.o,exports.pickFontByRole=r.i,exports.prepareGenerationRuns=Le,exports.prepareSpec=Ie,exports.prependFontCss=r.l,exports.razorwindInferPreprocessor=i.u,exports.registerRazorwindHooks=i.d,exports.registerRazorwindParsers=i.f,exports.renderFontCss=r.u,exports.renderGoogleFontImports=r.d,exports.renderLocalFontFaces=r.f,exports.resolveConfig=Fe,exports.resolveConfigs=$,exports.resolveSchemaMeta=Oe,exports.resolveTokensSource=i.i,exports.schemaMetaFromConfig=Ee,exports.schemaMetaFromPackageJson=Z,exports.styleDictionaryLogOptions=i.p,exports.themeKeyFromPath=i.a,exports.themesForGeneration=T,exports.toGoogleFontsCssUrl=r.p,exports.uniquePlugins=ke,exports.writeGeneratedDocuments=Re;
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as e,c as t,d as n,f as r,h as i,s as a}from"./utils-KDezR5p2.mjs";import{a as o,c as s,i as c,l,r as u,s as d}from"./schema-CXK5pVmJ.mjs";import{_ as f,a as p,b as ee,c as te,d as ne,f as re,g as ie,h as ae,i as oe,l as se,m as ce,n as le,o as ue,p as de,r as fe,s as pe,t as me,u as he,v as ge,y as _e}from"./fonts-BiuIJVev.mjs";import{C as ve,D as ye,E as be,S as xe,T as Se,_ as Ce,a as we,b as Te,c as Ee,d as De,f as Oe,g as ke,h as Ae,i as je,l as Me,m as Ne,n as m,o as Pe,p as Fe,r as Ie,s as Le,t as h,u as Re,v as ze,w as g,x as _,y as Be}from"./tokens-Dkt5sqg6.mjs";import{definePlugin as Ve}from"./plugin.mjs";import{defineGenerator as He,defineSchema as Ue,useExecution as v}from"@power-plant/core";import{createDefu as y,defu as b}from"defu";import{dirname as We,isAbsolute as x,resolve as S}from"node:path";import{titleCase as C}from"@stryke/string-format/title-case";import{existsSync as w}from"@stryke/fs/exists";import{isDirectory as T}from"@stryke/fs/is-file";import{readJsonFile as E}from"@stryke/fs/json";import{listFiles as Ge}from"@stryke/fs/list-files";import{appendPath as D}from"@stryke/path/append";import{findFileExtensionSafe as O,findFileName as k,findFolderName as A}from"@stryke/path/file-path-fns";import{joinPaths as j}from"@stryke/path/join";import{isSetObject as M}from"@stryke/type-checks/is-set-object";import{isSetString as N}from"@stryke/type-checks/is-set-string";import{mkdir as Ke,readFile as P,readdir as F,writeFile as qe}from"node:fs/promises";import{getEnvPaths as Je}from"@stryke/env/get-env-paths";import{findFilePath as I}from"@stryke/path/find";import{replacePath as L}from"@stryke/path/replace";import{isFunction as Ye}from"@stryke/type-checks/is-function";import{loadConfig as R}from"c12";import{createJiti as Xe}from"jiti";import{existsSync as z}from"node:fs";import Ze from"node:os";function B(t){let n=e(t),r=n.filter(e=>!i(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function Qe(e,t){let a=e.find(e=>e.id===r);return!a||i(t.id)?t.tokens:n(t.tokens,a.tokens)}function $e(e,n,r){return{...e,theme:n.id,title:t(e.title,n.id)??e.title,tokens:Qe(r,n)}}function et(e,n){let r=t(e.title,n.id);return r?{...e,title:r}:e}async function V(e,t,n=t.plugins.filter(e=>e.generate)){let r={};for(let i of n){let n=await i.generate(e,t);r=b(n,r)}return r}function tt(e){return e.themeGeneration===`combined`}async function nt(t,n){let r=n.plugins.filter(e=>e.generate),i=r.filter(tt),o=r.filter(e=>!tt(e)),s={};i.length>0&&(s=b(await V(t,n,i),s));let c=e(t.tokens),l=B(t.tokens);if(o.length===0)return s;if(l.length===0)return b(await V(t,n,o),s);for(let e of l){let r=await V($e(t,e,c),et(n,e),o);s=b(a(r,e.id),s)}return s}async function rt(e){let t={};for(let n of e)Object.assign(t,await nt(n.spec,n.config));return t}function H(e){return!!(N(e)||M(e)&&`url`in e&&N(e.url))}function U(e){if(N(e))return e;if(M(e)&&`url`in e&&N(e.url))return e.url}const it=s.partial(),at=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),ot=y((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function st(e,t){return x(t)?t:S(e,t)}function ct(e){return Array.isArray(e)?e.filter(N):N(e)?[e]:[]}function lt(e){let t=e.toLowerCase();if(at.has(t))return t}function ut(e){let t=O(e)?.toLowerCase();return!!(t&&at.has(t))}function W(e){if(!e)return;let t=d.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=d.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function G(e){if(!e)return;let t=l.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(N(t)){let e=k(t,{withExtension:!1})||t,r=l.safeParse({name:e,path:t});r.success&&n.push(r.data);continue}let e=l.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function dt(e){if(!M(e))return;let{files:t,usage:n,...r}=e,i=it.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function ft(e){return M(e)&&`path`in e}async function pt(e){let t=j(e,`package.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}let r={};N(n.name)&&(r.name=n.name,r.title=n.name),N(n.description)&&(r.description=n.description),N(n.version)&&(r.version=n.version),N(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),M(n.dependencies)&&(r.dependencies=n.dependencies),M(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(N);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;ft(a)?s=W(a):M(a)&&(o=dt(a),`files`in a&&(s=W(a.files)),`usage`in a&&(c=G(a.usage)));let l=ot(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function mt(e){let t=j(e,`component.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}if(ft(n)||Array.isArray(n)){let e=W(n);if(e)return{files:e}}if(!M(n))return;let r=dt(n)??{},i=`files`in n?W(n.files):void 0,a=`usage`in n?G(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 ht(e){try{return(await F(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ut(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function gt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=D(t.path,e),r=O(t.path)??``,i=t.language??lt(r),a=t.name||k(t.path,{withExtension:!1})||t.path,o=t.content??(w(n)?await P(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=j(e,`usage`);if(!w(n)||!T(n))return;let r=await ht(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=j(n,e),r=lt(O(e)??``),i=k(e,{withExtension:!1})||e;return{name:i,title:C(i),path:t,content:await P(t,`utf8`),...r?{language:r}:{}}}))}async function _t(e,t){let n=t??(await Ge(e)).filter(e=>k(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(O(t))?`component`:`file`,path:t,content:await P(D(t,e),`utf8`)}:{type:/[tj]sx$/.test(O(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await P(D(t.path,e),`utf8`):void 0,path:D(t.path,e)}))}async function vt(e){let t=await pt(e),n=await mt(e);if(!t&&!n)return;let r=ot(n??{},t??{}),i=N(r.name)?r.name:A(e),a=N(r.title)?r.title:C(i),o=s.safeParse({...r,name:i,title:a});if(!o.success)return;let c=await gt(e,o.data.usage);return{...o.data,files:await _t(e,o.data.files),...c?.length?{usage:c}:{}}}async function yt(e){let t={},n=ct(e.options.componentsPath);for(let r of n){let n=st(e.cwd,r);if(!(!w(n)||!T(n)))try{let e=await F(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await vt(j(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const bt=o.partial(),xt=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),K=y((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function St(e,t){return x(t)?t:S(e,t)}function Ct(e){return Array.isArray(e)?e.filter(N):N(e)?[e]:[]}function wt(e){let t=e.toLowerCase();if(xt.has(t))return t}function Tt(e){let t=O(e)?.toLowerCase();return!!(t&&xt.has(t))}function Et(e){return _.test(e)}async function q(e){try{return(await F(e,{withFileTypes:!0})).filter(e=>e.isFile()&&Tt(e.name)).map(e=>e.name)}catch{return[]}}function J(e){if(!e)return;let t=c.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=c.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function Dt(e){if(!M(e))return;let t=bt.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Ot(e){return M(e)&&`path`in e}async function Y(e,t,n){let r=D(e,t),i=wt(O(e)??``)??`file`,a=i===`svg`?await P(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function kt(e){let t=j(e,`package.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}let r={};N(n.name)&&(r.name=n.name,r.title=n.name),N(n.description)&&(r.description=n.description),N(n.version)&&(r.version=n.version),N(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(N);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Ot(a)?s=J(a):M(a)&&(o=Dt(a),`files`in a&&(s=J(a.files)));let c=K(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function At(e){let t=j(e,`icon.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}if(Ot(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Dt(n)}async function jt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=D(t.path,e),r=O(t.path)??``,i=t.type??wt(r)??`file`,a=t.content===void 0?i===`svg`?await P(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=>Y(t,e)))}async function Mt(e){let t=await kt(e),n=await At(e),r=await q(e);if(!t&&!n&&r.length===0)return;let i=K(n??{},t??{}),a=N(i.name)?i.name:A(e),s=N(i.title)?i.title:C(a),c=o.safeParse({...i,name:a,title:s});if(c.success)return{...c.data,files:await jt(e,c.data.files)}}function Nt(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:C(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Pt(e,t,n){let r=await q(e);for(let i of r){let r=k(i,{withExtension:!1});r&&Nt(n,r,await Y(i,e,t))}}async function Ft(e){let t={},n=Ct(e.options.iconsPath);for(let r of n){let n=St(e.cwd,r);if(!(!w(n)||!T(n)))try{let e=await F(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=j(n,r.name);if(r.isDirectory()){if(Et(r.name)){await Pt(e,r.name,t);continue}let n=await Mt(e);if(n){let e=t[n.name];t[n.name]=e?K(n,e):n}continue}if(r.isFile()&&Tt(r.name)){let e=k(r.name,{withExtension:!1});if(!e)continue;Nt(t,e,await Y(r.name,n))}}}catch{continue}}return t}function X(e,t){let n=e[t];return N(n)?n:void 0}function It(e){let t={};N(e.name)&&(t.name=e.name),N(e.description)&&(t.description=e.description),N(e.homepage)&&(t.homepage=e.homepage);let n=U(e.repository);n&&(t.repository=n),N(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(M(r)){let t=r,n=X(t,`title`),a=X(t,`name`),o=X(t,`description`),s=X(t,`homepage`),c=X(t,`logo`),l=U(t.repository);a?i.name=a:N(e.name)&&(i.name=e.name),n?i.title=n:N(i.name)&&(i.title=C(i.name)),o?i.description=o:N(e.description)&&(i.description=e.description),s?i.homepage=s:H(e.homepage)?i.homepage=U(e.homepage):H(e.author)?i.homepage=U(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&H(e.maintainers[0])?i.homepage=U(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&H(e.contributors[0])?i.homepage=U(e.contributors[0]):H(e.bugs)&&(i.homepage=U(e.bugs)),c&&(i.logo=c),l?i.repository=l:H(e.repository)&&(i.repository=U(e.repository))}return b(i,t)}function Lt(e){let t={};return N(e.name)&&(t.name=e.name),N(e.title)&&(t.title=e.title),N(e.description)&&(t.description=e.description),N(e.repository)&&(t.repository=e.repository),N(e.homepage)&&(t.homepage=e.homepage),N(e.logo)&&(t.logo=e.logo),t}async function Rt(e){let t=j(e,`package.json`);if(!w(t))return{};let n;try{n=await E(t)}catch{return{}}return It(n)}async function zt(e,t){let n=await Rt(e),r=Lt(t);return b(r,n)}function Bt(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Vt=Ze.homedir();function Ht(e){return Array.isArray(e)?e.filter(e=>M(e)):[]}function Z(e){return Array.isArray(e)||!M(e)?{}:{...e}}const Ut=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Wt(e,t){let n={...e};for(let e of Ut)t[e]!=null&&delete n[e];return n}function Gt(e,t,n,r){let i=b({cwd:e,envPaths:r.envPaths},Wt(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:j(e,`assets/icons`),fontsPath:j(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(N).map(e=>I(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=N(i.componentsPath)?I(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(N).map(e=>I(e));i.iconsPath=t.length>0?t:j(e,`assets/icons`)}else i.iconsPath=N(i.iconsPath)?I(i.iconsPath):j(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(N).map(e=>I(e));i.fontsPath=t.length>0?t:j(e,`assets/fonts`)}else i.fontsPath=N(i.fontsPath)?I(i.fontsPath):j(e,`assets/fonts`);return i.plugins=Bt(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function Q(e,t){let n=t.configFile&&z(L(t.configFile,e))?L(t.configFile,e):t.configFile&&z(t.configFile)?t.configFile:z(j(e,`razorwind.${t.mode}.ts`))?j(e,`razorwind.${t.mode}.ts`):z(j(e,`razorwind.${t.mode}.js`))?j(e,`razorwind.${t.mode}.js`):z(j(e,`razorwind.${t.mode}.mts`))?j(e,`razorwind.${t.mode}.mts`):z(j(e,`razorwind.${t.mode}.mjs`))?j(e,`razorwind.${t.mode}.mjs`):z(j(e,`razorwind.${t.mode}.cjs`))?j(e,`razorwind.${t.mode}.cjs`):z(j(e,`razorwind.${t.mode}.cts`))?j(e,`razorwind.${t.mode}.cts`):z(j(e,`razorwind.${t.mode}.json`))?j(e,`razorwind.${t.mode}.json`):z(j(e,`razorwind.${t.mode}.yaml`))?j(e,`razorwind.${t.mode}.yaml`):z(j(e,`razorwind.${t.mode}.yml`))?j(e,`razorwind.${t.mode}.yml`):z(j(e,`razorwind.config.ts`))?j(e,`razorwind.config.ts`):z(j(e,`razorwind.config.js`))?j(e,`razorwind.config.js`):z(j(e,`razorwind.config.mts`))?j(e,`razorwind.config.mts`):z(j(e,`razorwind.config.mjs`))?j(e,`razorwind.config.mjs`):z(j(e,`razorwind.config.cjs`))?j(e,`razorwind.config.cjs`):z(j(e,`razorwind.config.cts`))?j(e,`razorwind.config.cts`):z(j(e,`razorwind.config.json`))?j(e,`razorwind.config.json`):z(j(e,`razorwind.config.yaml`))?j(e,`razorwind.config.yaml`):z(j(e,`razorwind.config.yml`))?j(e,`razorwind.config.yml`):void 0,r=Je({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=Xe(e,i),o=[{}];if(n){let r=x(n)?n:S(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=Ye(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=Ht(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else M(r)&&(o=[{...r,configFile:n}])}}let[s,c,l]=await Promise.all([R({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),R({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),R({cwd:Vt,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=Z(s?.config),d=n?x(n)?n:S(e,n):void 0,f=typeof s?.configFile==`string`?s.configFile:void 0;d&&f&&S(e,f)===d&&delete u.plugins;let p={envPaths:{...r,home:Vt},workspaceLayer:u,environmentLayer:Z(c?.config),homeLayer:Z(l?.config)};return o.map(n=>Gt(e,t,n,p))}async function Kt(e,t){let n=(await Q(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function qt(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||h(t))&&(t=await m(e));let n={...await zt(e.cwd,e.options),tokens:t??{},components:b(e.options.components??{},await yt(e)??{}),icons:b(e.options.icons??{},await Ft(e)??{}),fonts:b(e.options.fonts??{},await p(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||h(n.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 t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Jt(e,t){let n=await Q(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await qt(e),config:t});return r}async function $(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=x(e)?e:S(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await Ke(We(a),{recursive:!0}),await qe(a,o,`utf8`),n.push(a)}return n}var Yt=`0.0.58`;function Xt(e){return e}const Zt=He({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:Yt,tags:[`razorwind`,`dtcg`]},schema:Ue({schema:u}),input:async e=>{let t=v(),n=await Jt(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await $(n,v().cwd)},generator:async e=>{let t=v();return rt(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});export{Te as DEFAULT_TOKEN_PATH_CANDIDATES,ae as FONT_EXTENSIONS,ie as FONT_FORMAT_FROM_EXTENSION,f as GENERIC_FALLBACK_FROM_ROLE,ge as MONO_ROLES,Pe as RAZORWIND_INFER_PREPROCESSOR,_e as SANS_ROLES,_ as THEME_BASENAME_PATTERN,xe as TOKEN_DIRECTORY_GLOB,ve as TOKEN_FILE_EXTENSIONS,Se as TYPE_ALIASES,be as TYPE_PATH_HINTS,ee as WEIGHT_FROM_SUFFIX,g as WINDIE_PARSERS,g as razorwindParsers,ye as canonicalizeTokenType,Ne as collectCssCustomProperties,ce as copyFontFiles,pe as cssFontFamily,Xt as defineConfig,Ve as definePlugin,te as fontFamilyName,rt as generateAllPluginDocuments,nt as generatePluginDocuments,Zt as generator,Le as getExtractionHooks,Ee as getRazorwindParserHooks,Me as getRazorwindPreprocessorHooks,ke as inferTypeFromPath,Ce as inferValue,me as isEmptyFonts,h as isEmptyTokens,yt as loadComponents,p as loadFonts,Ft as loadIcons,Rt as loadSchemaMetaFromPackageJson,m as loadTokens,Ie as loadTokensOrThrow,le as mergeFonts,ze as nestFlatTokens,U as normalizeRepository,Be as normalizeTokenTree,Ae as parseCssCustomProperties,fe as parseCssFonts,ue as parseFontFilename,oe as pickFontByRole,Jt as prepareGenerationRuns,qt as prepareSpec,se as prependFontCss,Re as razorwindInferPreprocessor,De as registerRazorwindHooks,Oe as registerRazorwindParsers,he as renderFontCss,ne as renderGoogleFontImports,re as renderLocalFontFaces,Kt as resolveConfig,Q as resolveConfigs,zt as resolveSchemaMeta,je as resolveTokensSource,Lt as schemaMetaFromConfig,It as schemaMetaFromPackageJson,Fe as styleDictionaryLogOptions,we as themeKeyFromPath,B as themesForGeneration,de as toGoogleFontsCssUrl,Bt as uniquePlugins,$ as writeGeneratedDocuments};
|
|
1
|
+
import{_ as e,c as t,d as n,f as r,h as i,s as a}from"./utils-KDezR5p2.mjs";import{a as o,c as s,i as c,l,r as u,s as d}from"./schema-CXK5pVmJ.mjs";import{_ as f,a as p,b as ee,c as te,d as ne,f as re,g as ie,h as ae,i as oe,l as se,m as ce,n as le,o as ue,p as de,r as fe,s as pe,t as me,u as he,v as ge,y as _e}from"./fonts-BiuIJVev.mjs";import{C as ve,D as ye,E as be,S as xe,T as Se,_ as Ce,a as we,b as Te,c as Ee,d as De,f as Oe,g as ke,h as Ae,i as je,l as Me,m as Ne,n as m,o as Pe,p as Fe,r as Ie,s as Le,t as h,u as Re,v as ze,w as g,x as _,y as Be}from"./tokens-Dkt5sqg6.mjs";import{definePlugin as Ve}from"./plugin.mjs";import{defineGenerator as He,defineSchema as Ue,useExecution as v}from"@power-plant/core";import{createDefu as y,defu as b}from"defu";import{dirname as We,isAbsolute as x,resolve as S}from"node:path";import{titleCase as C}from"@stryke/string-format/title-case";import{existsSync as w}from"@stryke/fs/exists";import{isDirectory as T}from"@stryke/fs/is-file";import{readJsonFile as E}from"@stryke/fs/json";import{listFiles as Ge}from"@stryke/fs/list-files";import{appendPath as D}from"@stryke/path/append";import{findFileExtensionSafe as O,findFileName as k,findFolderName as A}from"@stryke/path/file-path-fns";import{joinPaths as j}from"@stryke/path/join";import{isSetObject as M}from"@stryke/type-checks/is-set-object";import{isSetString as N}from"@stryke/type-checks/is-set-string";import{mkdir as Ke,readFile as P,readdir as F,writeFile as qe}from"node:fs/promises";import{getEnvPaths as Je}from"@stryke/env/get-env-paths";import{findFilePath as I}from"@stryke/path/find";import{replacePath as L}from"@stryke/path/replace";import{isFunction as Ye}from"@stryke/type-checks/is-function";import{loadConfig as R}from"c12";import{createJiti as Xe}from"jiti";import{existsSync as z}from"node:fs";import Ze from"node:os";function B(t){let n=e(t),r=n.filter(e=>!i(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function Qe(e,t){let a=e.find(e=>e.id===r);return!a||i(t.id)?t.tokens:n(t.tokens,a.tokens)}function $e(e,n,r){return{...e,theme:n.id,title:t(e.title,n.id)??e.title,tokens:Qe(r,n)}}function et(e,n){let r=t(e.title,n.id);return r?{...e,title:r}:e}async function V(e,t,n=t.plugins.filter(e=>e.generate)){let r={};for(let i of n){let n=await i.generate(e,t);r=b(n,r)}return r}function tt(e){return e.themeGeneration===`combined`}async function nt(t,n){let r=n.plugins.filter(e=>e.generate),i=r.filter(tt),o=r.filter(e=>!tt(e)),s={};i.length>0&&(s=b(await V(t,n,i),s));let c=e(t.tokens),l=B(t.tokens);if(o.length===0)return s;if(l.length===0)return b(await V(t,n,o),s);for(let e of l){let r=await V($e(t,e,c),et(n,e),o);s=b(a(r,e.id),s)}return s}async function rt(e){let t={};for(let n of e)Object.assign(t,await nt(n.spec,n.config));return t}function H(e){return!!(N(e)||M(e)&&`url`in e&&N(e.url))}function U(e){if(N(e))return e;if(M(e)&&`url`in e&&N(e.url))return e.url}const it=s.partial(),at=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),ot=y((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function st(e,t){return x(t)?t:S(e,t)}function ct(e){return Array.isArray(e)?e.filter(N):N(e)?[e]:[]}function lt(e){let t=e.toLowerCase();if(at.has(t))return t}function ut(e){let t=O(e)?.toLowerCase();return!!(t&&at.has(t))}function W(e){if(!e)return;let t=d.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=d.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function G(e){if(!e)return;let t=l.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(N(t)){let e=k(t,{withExtension:!1})||t,r=l.safeParse({name:e,path:t});r.success&&n.push(r.data);continue}let e=l.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function dt(e){if(!M(e))return;let{files:t,usage:n,...r}=e,i=it.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function ft(e){return M(e)&&`path`in e}async function pt(e){let t=j(e,`package.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}let r={};N(n.name)&&(r.name=n.name,r.title=n.name),N(n.description)&&(r.description=n.description),N(n.version)&&(r.version=n.version),N(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),M(n.dependencies)&&(r.dependencies=n.dependencies),M(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(N);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;ft(a)?s=W(a):M(a)&&(o=dt(a),`files`in a&&(s=W(a.files)),`usage`in a&&(c=G(a.usage)));let l=ot(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function mt(e){let t=j(e,`component.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}if(ft(n)||Array.isArray(n)){let e=W(n);if(e)return{files:e}}if(!M(n))return;let r=dt(n)??{},i=`files`in n?W(n.files):void 0,a=`usage`in n?G(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 ht(e){try{return(await F(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&ut(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function gt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=D(t.path,e),r=O(t.path)??``,i=t.language??lt(r),a=t.name||k(t.path,{withExtension:!1})||t.path,o=t.content??(w(n)?await P(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=j(e,`usage`);if(!w(n)||!T(n))return;let r=await ht(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=j(n,e),r=lt(O(e)??``),i=k(e,{withExtension:!1})||e;return{name:i,title:C(i),path:t,content:await P(t,`utf8`),...r?{language:r}:{}}}))}async function _t(e,t){let n=t??(await Ge(e)).filter(e=>k(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(O(t))?`component`:`file`,path:t,content:await P(D(t,e),`utf8`)}:{type:/[tj]sx$/.test(O(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await P(D(t.path,e),`utf8`):void 0,path:D(t.path,e)}))}async function vt(e){let t=await pt(e),n=await mt(e);if(!t&&!n)return;let r=ot(n??{},t??{}),i=N(r.name)?r.name:A(e),a=N(r.title)?r.title:C(i),o=s.safeParse({...r,name:i,title:a});if(!o.success)return;let c=await gt(e,o.data.usage);return{...o.data,files:await _t(e,o.data.files),...c?.length?{usage:c}:{}}}async function yt(e){let t={},n=ct(e.options.componentsPath);for(let r of n){let n=st(e.cwd,r);if(!(!w(n)||!T(n)))try{let e=await F(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await vt(j(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const bt=o.partial(),xt=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),K=y((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function St(e,t){return x(t)?t:S(e,t)}function Ct(e){return Array.isArray(e)?e.filter(N):N(e)?[e]:[]}function wt(e){let t=e.toLowerCase();if(xt.has(t))return t}function Tt(e){let t=O(e)?.toLowerCase();return!!(t&&xt.has(t))}function Et(e){return _.test(e)}async function q(e){try{return(await F(e,{withFileTypes:!0})).filter(e=>e.isFile()&&Tt(e.name)).map(e=>e.name)}catch{return[]}}function J(e){if(!e)return;let t=c.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=c.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function Dt(e){if(!M(e))return;let t=bt.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Ot(e){return M(e)&&`path`in e}async function Y(e,t,n){let r=D(e,t),i=wt(O(e)??``)??`file`,a=i===`svg`?await P(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function kt(e){let t=j(e,`package.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}let r={};N(n.name)&&(r.name=n.name,r.title=n.name),N(n.description)&&(r.description=n.description),N(n.version)&&(r.version=n.version),N(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(N);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Ot(a)?s=J(a):M(a)&&(o=Dt(a),`files`in a&&(s=J(a.files)));let c=K(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function At(e){let t=j(e,`icon.json`);if(!w(t))return;let n;try{n=await E(t)}catch{return}if(Ot(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Dt(n)}async function jt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=D(t.path,e),r=O(t.path)??``,i=t.type??wt(r)??`file`,a=t.content===void 0?i===`svg`?await P(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=>Y(t,e)))}async function Mt(e){let t=await kt(e),n=await At(e),r=await q(e);if(!t&&!n&&r.length===0)return;let i=K(n??{},t??{}),a=N(i.name)?i.name:A(e),s=N(i.title)?i.title:C(a),c=o.safeParse({...i,name:a,title:s});if(c.success)return{...c.data,files:await jt(e,c.data.files)}}function Nt(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:C(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Pt(e,t,n){let r=await q(e);for(let i of r){let r=k(i,{withExtension:!1});r&&Nt(n,r,await Y(i,e,t))}}async function Ft(e){let t={},n=Ct(e.options.iconsPath);for(let r of n){let n=St(e.cwd,r);if(!(!w(n)||!T(n)))try{let e=await F(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=j(n,r.name);if(r.isDirectory()){if(Et(r.name)){await Pt(e,r.name,t);continue}let n=await Mt(e);if(n){let e=t[n.name];t[n.name]=e?K(n,e):n}continue}if(r.isFile()&&Tt(r.name)){let e=k(r.name,{withExtension:!1});if(!e)continue;Nt(t,e,await Y(r.name,n))}}}catch{continue}}return t}function X(e,t){let n=e[t];return N(n)?n:void 0}function It(e){let t={};N(e.name)&&(t.name=e.name),N(e.description)&&(t.description=e.description),N(e.homepage)&&(t.homepage=e.homepage);let n=U(e.repository);n&&(t.repository=n),N(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(M(r)){let t=r,n=X(t,`title`),a=X(t,`name`),o=X(t,`description`),s=X(t,`homepage`),c=X(t,`logo`),l=U(t.repository);a?i.name=a:N(e.name)&&(i.name=e.name),n?i.title=n:N(i.name)&&(i.title=C(i.name)),o?i.description=o:N(e.description)&&(i.description=e.description),s?i.homepage=s:H(e.homepage)?i.homepage=U(e.homepage):H(e.author)?i.homepage=U(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&H(e.maintainers[0])?i.homepage=U(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&H(e.contributors[0])?i.homepage=U(e.contributors[0]):H(e.bugs)&&(i.homepage=U(e.bugs)),c&&(i.logo=c),l?i.repository=l:H(e.repository)&&(i.repository=U(e.repository))}return b(i,t)}function Lt(e){let t={};return N(e.name)&&(t.name=e.name),N(e.title)&&(t.title=e.title),N(e.description)&&(t.description=e.description),N(e.repository)&&(t.repository=e.repository),N(e.homepage)&&(t.homepage=e.homepage),N(e.logo)&&(t.logo=e.logo),t}async function Rt(e){let t=j(e,`package.json`);if(!w(t))return{};let n;try{n=await E(t)}catch{return{}}return It(n)}async function zt(e,t){let n=await Rt(e),r=Lt(t);return b(r,n)}function Bt(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Vt=Ze.homedir();function Ht(e){return Array.isArray(e)?e.filter(e=>M(e)):[]}function Z(e){return Array.isArray(e)||!M(e)?{}:{...e}}const Ut=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Wt(e,t){let n={...e};for(let e of Ut)t[e]!=null&&delete n[e];return n}function Gt(e,t,n,r){let i=b({cwd:e,envPaths:r.envPaths},Wt(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:j(e,`assets/icons`),fontsPath:j(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(N).map(e=>I(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=N(i.componentsPath)?I(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(N).map(e=>I(e));i.iconsPath=t.length>0?t:j(e,`assets/icons`)}else i.iconsPath=N(i.iconsPath)?I(i.iconsPath):j(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(N).map(e=>I(e));i.fontsPath=t.length>0?t:j(e,`assets/fonts`)}else i.fontsPath=N(i.fontsPath)?I(i.fontsPath):j(e,`assets/fonts`);return i.plugins=Bt(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function Q(e,t){let n=t.configFile&&z(L(t.configFile,e))?L(t.configFile,e):t.configFile&&z(t.configFile)?t.configFile:z(j(e,`razorwind.${t.mode}.ts`))?j(e,`razorwind.${t.mode}.ts`):z(j(e,`razorwind.${t.mode}.js`))?j(e,`razorwind.${t.mode}.js`):z(j(e,`razorwind.${t.mode}.mts`))?j(e,`razorwind.${t.mode}.mts`):z(j(e,`razorwind.${t.mode}.mjs`))?j(e,`razorwind.${t.mode}.mjs`):z(j(e,`razorwind.${t.mode}.cjs`))?j(e,`razorwind.${t.mode}.cjs`):z(j(e,`razorwind.${t.mode}.cts`))?j(e,`razorwind.${t.mode}.cts`):z(j(e,`razorwind.${t.mode}.json`))?j(e,`razorwind.${t.mode}.json`):z(j(e,`razorwind.${t.mode}.yaml`))?j(e,`razorwind.${t.mode}.yaml`):z(j(e,`razorwind.${t.mode}.yml`))?j(e,`razorwind.${t.mode}.yml`):z(j(e,`razorwind.config.ts`))?j(e,`razorwind.config.ts`):z(j(e,`razorwind.config.js`))?j(e,`razorwind.config.js`):z(j(e,`razorwind.config.mts`))?j(e,`razorwind.config.mts`):z(j(e,`razorwind.config.mjs`))?j(e,`razorwind.config.mjs`):z(j(e,`razorwind.config.cjs`))?j(e,`razorwind.config.cjs`):z(j(e,`razorwind.config.cts`))?j(e,`razorwind.config.cts`):z(j(e,`razorwind.config.json`))?j(e,`razorwind.config.json`):z(j(e,`razorwind.config.yaml`))?j(e,`razorwind.config.yaml`):z(j(e,`razorwind.config.yml`))?j(e,`razorwind.config.yml`):void 0,r=Je({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=Xe(e,i),o=[{}];if(n){let r=x(n)?n:S(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=Ye(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=Ht(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else M(r)&&(o=[{...r,configFile:n}])}}let[s,c,l]=await Promise.all([R({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),R({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),R({cwd:Vt,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=Z(s?.config),d=n?x(n)?n:S(e,n):void 0,f=typeof s?.configFile==`string`?s.configFile:void 0;d&&f&&S(e,f)===d&&delete u.plugins;let p={envPaths:{...r,home:Vt},workspaceLayer:u,environmentLayer:Z(c?.config),homeLayer:Z(l?.config)};return o.map(n=>Gt(e,t,n,p))}async function Kt(e,t){let n=(await Q(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function qt(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||h(t))&&(t=await m(e));let n={...await zt(e.cwd,e.options),tokens:t??{},components:b(e.options.components??{},await yt(e)??{}),icons:b(e.options.icons??{},await Ft(e)??{}),fonts:b(e.options.fonts??{},await p(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||h(n.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 t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Jt(e,t){let n=await Q(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await qt(e),config:t});return r}async function $(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=x(e)?e:S(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await Ke(We(a),{recursive:!0}),await qe(a,o,`utf8`),n.push(a)}return n}var Yt=`0.0.59`;function Xt(e){return e}const Zt=He({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:Yt,tags:[`razorwind`,`dtcg`]},schema:Ue({schema:u}),input:async e=>{let t=v(),n=await Jt(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await $(n,v().cwd)},generator:async e=>{let t=v();return rt(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});export{Te as DEFAULT_TOKEN_PATH_CANDIDATES,ae as FONT_EXTENSIONS,ie as FONT_FORMAT_FROM_EXTENSION,f as GENERIC_FALLBACK_FROM_ROLE,ge as MONO_ROLES,Pe as RAZORWIND_INFER_PREPROCESSOR,_e as SANS_ROLES,_ as THEME_BASENAME_PATTERN,xe as TOKEN_DIRECTORY_GLOB,ve as TOKEN_FILE_EXTENSIONS,Se as TYPE_ALIASES,be as TYPE_PATH_HINTS,ee as WEIGHT_FROM_SUFFIX,g as WINDIE_PARSERS,g as razorwindParsers,ye as canonicalizeTokenType,Ne as collectCssCustomProperties,ce as copyFontFiles,pe as cssFontFamily,Xt as defineConfig,Ve as definePlugin,te as fontFamilyName,rt as generateAllPluginDocuments,nt as generatePluginDocuments,Zt as generator,Le as getExtractionHooks,Ee as getRazorwindParserHooks,Me as getRazorwindPreprocessorHooks,ke as inferTypeFromPath,Ce as inferValue,me as isEmptyFonts,h as isEmptyTokens,yt as loadComponents,p as loadFonts,Ft as loadIcons,Rt as loadSchemaMetaFromPackageJson,m as loadTokens,Ie as loadTokensOrThrow,le as mergeFonts,ze as nestFlatTokens,U as normalizeRepository,Be as normalizeTokenTree,Ae as parseCssCustomProperties,fe as parseCssFonts,ue as parseFontFilename,oe as pickFontByRole,Jt as prepareGenerationRuns,qt as prepareSpec,se as prependFontCss,Re as razorwindInferPreprocessor,De as registerRazorwindHooks,Oe as registerRazorwindParsers,he as renderFontCss,ne as renderGoogleFontImports,re as renderLocalFontFaces,Kt as resolveConfig,Q as resolveConfigs,zt as resolveSchemaMeta,je as resolveTokensSource,Lt as schemaMetaFromConfig,It as schemaMetaFromPackageJson,Fe as styleDictionaryLogOptions,we as themeKeyFromPath,B as themesForGeneration,de as toGoogleFontsCssUrl,Bt as uniquePlugins,$ as writeGeneratedDocuments};
|
|
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.
|
|
3
|
+
"version": "0.0.59",
|
|
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"],
|
|
@@ -159,5 +159,5 @@
|
|
|
159
159
|
"typescript": "^6.0.3"
|
|
160
160
|
},
|
|
161
161
|
"publishConfig": { "access": "public" },
|
|
162
|
-
"gitHead": "
|
|
162
|
+
"gitHead": "43b57170fcf1f25a7e928100915a6fcb58330db5"
|
|
163
163
|
}
|