@razorwind/core 0.0.14 → 0.0.16
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.d.cts +4 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +1 -1
- package/dist/{plugin-DNLmSRnE.d.mts → plugin-B1R5dPEv.d.mts} +15 -91
- package/dist/plugin-B1R5dPEv.d.mts.map +1 -0
- package/dist/{plugin-CUtxHXKj.d.cts → plugin-CCSoeiLW.d.cts} +15 -91
- package/dist/plugin-CCSoeiLW.d.cts.map +1 -0
- package/dist/plugin.d.cts +2 -2
- package/dist/plugin.d.mts +2 -2
- package/dist/schema-BNfl9Tsw.d.cts.map +1 -1
- package/package.json +13 -14
- package/dist/plugin-CUtxHXKj.d.cts.map +0 -1
- package/dist/plugin-DNLmSRnE.d.mts.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./schema-qGVCMtQR.cjs"),t=require("./utils/index.cjs"),n=require("./plugin.cjs");let r=require("@power-plant/core"),i=require("@stryke/type-checks/is-empty-object"),a=require("defu"),o=require("style-dictionary");o=e.a(o,1);let s=require("@stryke/fs/exists"),c=require("@stryke/fs/is-file"),l=require("@stryke/fs/json"),u=require("@stryke/path/join"),d=require("@stryke/type-checks/is-set-object"),f=require("@stryke/type-checks/is-set-string"),p=require("node:fs/promises"),m=require("node:path"),ee=require("@stryke/env"),h=require("@stryke/path/find"),g=require("@stryke/path/replace"),_=require("@stryke/type-checks/is-function"),v=require("c12"),te=require("jiti"),y=require("node:fs"),b=require("node:os");b=e.a(b,1);let ne=require("@stryke/fs/resolve"),x=require("fast-glob");x=e.a(x,1);let S=require("json5");S=e.a(S,1);let C=require("smol-toml"),re=require("yaml");var ie=`0.0.14`;const ae=e.r.partial(),w=(0,a.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function oe(e,t){return(0,m.isAbsolute)(t)?t:(0,m.resolve)(e,t)}function se(e){return Array.isArray(e)?e.filter(f.isSetString):(0,f.isSetString)(e)?[e]:[]}function ce(e){if((0,f.isSetString)(e))return e;if((0,d.isSetObject)(e)&&`url`in e&&(0,f.isSetString)(e.url))return e.url}function T(t){if(!t)return;let n=e.n.safeParse(t);if(n.success)return[n.data];if(!Array.isArray(t))return;let r=[];for(let n of t){let t=e.n.safeParse(n);t.success&&r.push(t.data)}return r.length>0?r:void 0}function E(e){if(!(0,d.isSetObject)(e))return;let t=ae.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function D(e){return(0,d.isSetObject)(e)&&`path`in e}async function le(e){let t=(0,u.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,f.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,f.isSetString)(n.description)&&(r.description=n.description),(0,f.isSetString)(n.version)&&(r.version=n.version),(0,f.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=ce(n.repository);if(i&&(r.repository=i),(0,d.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,d.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(f.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c;D(a)?c=T(a):(0,d.isSetObject)(a)&&(o=E(a),`files`in a&&(c=T(a.files)));let p=w(o??{},r);return c?.length&&(p.files=c),Object.keys(p).length>0?p:void 0}async function ue(e){let t=(0,u.joinPaths)(e,`component.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(D(n)||Array.isArray(n)){let e=T(n);if(e)return{files:e}}return E(n)}async function de(t){let n=await le(t),r=await ue(t);if(!n&&!r)return;let i=w(r??{},n??{}),a=(0,m.basename)(t),o=(0,f.isSetString)(i.name)?i.name:a,s=(0,f.isSetString)(i.title)?i.title:o,c=e.r.safeParse({...i,name:o,title:s});return c.success?c.data:void 0}async function fe(e){let t={},n=se(e.options.componentsPath);for(let r of n){let n=oe(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,p.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await de((0,u.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const O=b.default.homedir();async function k(e,t){let n=t.configFile&&(0,y.existsSync)((0,g.replacePath)(t.configFile,e))?(0,g.replacePath)(t.configFile,e):t.configFile&&(0,y.existsSync)(t.configFile)?t.configFile:(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.ts`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.ts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.js`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.js`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.mts`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.mts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.mjs`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.mjs`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.ts`))?(0,u.joinPaths)(e,`razorwind.config.ts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.js`))?(0,u.joinPaths)(e,`razorwind.config.js`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.mts`))?(0,u.joinPaths)(e,`razorwind.config.mts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.mjs`))?(0,u.joinPaths)(e,`razorwind.config.mjs`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},o=(0,te.createJiti)(e,i),s={};if(n){let r=await o.import(o.esmResolve(n));if(r?.default){let i={};(0,_.isFunction)(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):((0,d.isSetObject)(r.default)||Array.isArray(r.default))&&(i=r.default),((0,d.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,p]=await Promise.all([(0,v.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,v.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,v.loadConfig)({cwd:O,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),m=(0,a.defu)({cwd:e,envPaths:{...r,home:O}},t,s,(0,d.isSetObject)(c?.config)?{...c.config}:{},(0,d.isSetObject)(l?.config)?{...l.config}:{},(0,d.isSetObject)(p?.config)?{...p.config}:{},{componentsPath:e,plugins:[]});if(Array.isArray(m.componentsPath)){let t=m.componentsPath.filter(f.isSetString).map(e=>(0,h.findFilePath)(e));m.componentsPath=t.length>0?t:e}else m.componentsPath=(0,f.isSetString)(m.componentsPath)?(0,h.findFilePath)(m.componentsPath):e;return Array.isArray(m.plugins)||(m.plugins=[]),m}const pe=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],A=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],me=A.join(`,`),he=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],ge=`**/*.{${me}}`,_e=/^(light|dark|dim|dimmed|high-contrast|hc|default|base|theme)([._-].+)?$/i,ve={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},ye=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,j=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,M=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,N=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,P=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,be=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,xe=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,Se=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,Ce=/^\{[^{}]+\}$/,we={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},F=new Set([`px`,`rem`]);function I(e){return Math.min(1,Math.max(0,e))}function L(e,t=100){let n=e.trim();if(n.endsWith(`%`))return I(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return I(r>1?r/255:r)}function Te(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function Ee(e){let t=Te(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function De(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function R(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function z(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=ve[n];if(r)return r}}function B(e,n=[]){let r=z(n);if(typeof e==`string`){let t=e.trim();if(Ce.test(t))return{value:t,type:r};let i=t.match(Se);if(i?.[1])return{value:De(i[1]),type:r};if(ye.test(t))return{value:Ee(t),type:`color`};let a=t.match(j);if(a){let e=[L(a[1]),L(a[2]),L(a[3])],t=a[4]?a[4].endsWith(`%`)?I(Number.parseFloat(a[4])/100):I(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=t.match(M);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?I(Number.parseFloat(o[4])/100):I(Number.parseFloat(o[4]))}:{}},type:`color`};let s=t.match(N);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?I(Number.parseFloat(s[4])/100):I(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=t.match(P);if(c){let e=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return F.has(e)?{value:{value:n,unit:e},type:`dimension`}:{value:t,type:r===`dimension`?void 0:r}}let l=t.match(be);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=t.match(xe);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=we[t.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?t.includes(`,`)?{value:t.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:t.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!t.startsWith(`{`)?{value:t,type:void 0}:{value:t,type:r}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return r===`fontWeight`?{value:e,type:`fontWeight`}:r===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:r??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:r??`fontFamily`}:{value:e,type:r};if(t.isObject(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:F.has(t)?{value:e,type:`dimension`}:{value:e,type:r}}}return{value:e,type:r}}function Oe(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=B(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function V(e,n=[]){if(Array.isArray(e))return e.map((e,t)=>V(e,[...n,String(t)]));if(!t.isObject(e))return e;if(R(e))return Oe(e,n);let r={};for(let[t,i]of Object.entries(e)){if(t.startsWith(`$`)){r[t]=i;continue}r[t]=V(i,[...n,t])}if(!(`$type`in r)){let e=z(n);e&&n.length>0&&(r.$type=e)}return r}function ke(e){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=n;for(let n=0;n<e.length-1;n++){let r=e[n],i=a[r];t.isObject(i)?R(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=e.at(-1),s=B(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];t.isObject(l)&&!R(l)?l.DEFAULT=c:a[o]=c}return V(n)}const Ae=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function je(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(Ae)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return ke(t)}const H=`razorwind-infer`;function U(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return V(e)}function Me(e){try{return U(S.default.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function Ne(e){try{return U((0,re.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function Pe(e){try{return U((0,C.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const W=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>Me(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>Ne(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>Pe(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>V(je(e))}];function Fe(){return Object.fromEntries(W.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function G(e){return V(e)}function Ie(){return{[H]:G}}function K(e=[],t=o.default){for(let e of W)t.registerParser(e);t.registerPreprocessor({name:H,preprocessor:G});let n=0,r=0,i=0,a=0,s=0,c=0,l=0,u=0;for(let o of e){for(let e of o.parsers??[])t.registerParser({name:e.name??`${o.name}-parser-${n}`,pattern:e.pattern,parser:({contents:t})=>e.parser(t)}),n++;for(let e of o.preprocessors??[])t.registerPreprocessor((0,_.isFunction)(e)?{name:`${o.name}-preprocessor-${r}`,preprocessor:e}:{name:e.name??`${o.name}-preprocessor-${r}`,preprocessor:e.preprocessor}),r++;for(let e of o.transforms??[])t.registerTransform({...e,name:e.name??`${o.name}-transform-${i}`}),i++;for(let e of o.transformGroups??[])t.registerTransformGroup({name:e.name??`${o.name}-transform-group-${a}`,transforms:e.transforms}),a++;for(let e of o.formats??[])t.registerFormat({...e,name:e.name??`${o.name}-format-${s}`}),s++;for(let e of o.filters??[])t.registerFilter((0,_.isFunction)(e)?{name:`${o.name}-filter-${c}`,filter:e}:{name:e.name??`${o.name}-filter-${c}`,filter:e.filter}),c++;for(let e of o.fileHeaders??[])t.registerFileHeader((0,_.isFunction)(e)?{name:`${o.name}-file-header-${l}`,fileHeader:e}:{name:e.name??`${o.name}-file-header-${l}`,fileHeader:e.fileHeader}),l++;for(let e of o.actions??[])t.registerAction({...e,name:e.name??`${o.name}-action-${u}`}),u++}}function q(e,t){return(0,m.isAbsolute)(t)?t:(0,m.resolve)(e,t)}function J(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function Y(e){return A.includes(J(e))}function X(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function Z(e){return(0,u.joinPaths)(e,ge)}function Le(e){return Array.isArray(e)?e.filter(f.isSetString):(0,f.isSetString)(e)?[e]:[]}function Re(e,t){let n=q(e,t);if(!(0,s.existsSync)(n))throw Error(`tokensPath "${t}" does not exist (resolved: ${n}).`);return(0,c.isDirectory)(n)?{resolvedPath:n,source:[Z(n)],isStyleDictionaryConfig:!1}:X(n)?{resolvedPath:n,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:n,source:[n],isStyleDictionaryConfig:!1}}function ze(e){let{cwd:t,tokensPath:n,fallbackPaths:r=[]}=e,i=Le(n);if(i.length>0){let e=i.map(e=>Re(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of he){let n=q(t,e);if((0,s.existsSync)(n)){if((0,c.isDirectory)(n))return{resolvedPath:n,source:[Z(n)],origin:`default`};if(X(n))return{resolvedPath:n,source:[],origin:`default`};if(Y(n))return{resolvedPath:n,source:[n],origin:`default`}}}for(let e of r){if(!e)continue;let n=q(t,e);if(!(!(0,s.existsSync)(n)||(0,c.isDirectory)(n))&&(Y(n)||J(n)===`css`))return{resolvedPath:n,source:[n],origin:`fallback`}}return{source:[],origin:`none`}}function Be(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(_e)?.[1]?.toLowerCase()}function Ve(e){K(e.plugins,o.default)}function He(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Ue(e){let t=await(0,ne.importModule)(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Q(e,t){Ve(e);let n=new o.default({...t,parsers:[...pe,...t.parsers??[]],preprocessors:[H,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...Fe(),...t.hooks?.parsers},preprocessors:{...Ie(),...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}});return await n.hasInitialized,n}async function $(e,t){return t.length===0?{}:(await Q(e,{source:t})).tokens}async function We(e){return(await(0,x.default)(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Ge(e,t){let n=await We(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=Be(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return $(e,t);let a={};if(i.length>0){let t=await $(e,i);He(t)||(a.base=t)}for(let[t,n]of r)a[t]=await $(e,n);return a}async function Ke(e){let t=ze(e.options);return t.resolvedPath&&(0,s.existsSync)(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test((0,m.basename)(t.resolvedPath))?(e.sd=await Q(e.options,await Ue(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Ge(e.options,t.source):$(e.options,t.source)}function qe(e){return e}const Je=(0,r.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens and components.`,version:ie,tags:[`razorwind`,`dtcg`]},schema:(0,r.defineSchema)({schema:e.t}),input:async e=>{let t=(0,r.useExecution)();if(t.options=await k(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.`);K(t.options.plugins,o.default);let n=t.options.tokens;(!n||(0,i.isEmptyObject)(n))&&(n=await Ke(t));let s={tokens:n??{},components:(0,a.defu)(t.options.components??{},await fe(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))s=await e.extract(s,t.options);if(!s.tokens||(0,i.isEmptyObject)(s.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let e of t.options.plugins.filter(e=>e.validate))await e.validate(s,t.options);return s},generator:async e=>{let t=(0,r.useExecution)(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=(0,a.defu)(i,n)}return n}});exports.defineConfig=qe,exports.definePlugin=n.definePlugin,exports.generator=Je,exports.resolveConfig=k;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./schema-qGVCMtQR.cjs"),t=require("./utils/index.cjs"),n=require("./plugin.cjs");let r=require("@power-plant/core"),i=require("@stryke/type-checks/is-empty-object"),a=require("defu"),o=require("style-dictionary");o=e.a(o,1);let s=require("@stryke/fs/exists"),c=require("@stryke/fs/is-file"),l=require("@stryke/fs/json"),u=require("@stryke/path/join"),d=require("@stryke/type-checks/is-set-object"),f=require("@stryke/type-checks/is-set-string"),p=require("node:fs/promises"),m=require("node:path"),ee=require("@stryke/env"),h=require("@stryke/path/find"),g=require("@stryke/path/replace"),_=require("@stryke/type-checks/is-function"),v=require("c12"),te=require("jiti"),y=require("node:fs"),b=require("node:os");b=e.a(b,1);let ne=require("@stryke/fs/resolve"),x=require("fast-glob");x=e.a(x,1);let S=require("json5");S=e.a(S,1);let re=require("smol-toml"),ie=require("yaml");var ae=`0.0.16`;const oe=e.r.partial(),C=(0,a.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function se(e,t){return(0,m.isAbsolute)(t)?t:(0,m.resolve)(e,t)}function ce(e){return Array.isArray(e)?e.filter(f.isSetString):(0,f.isSetString)(e)?[e]:[]}function le(e){if((0,f.isSetString)(e))return e;if((0,d.isSetObject)(e)&&`url`in e&&(0,f.isSetString)(e.url))return e.url}function w(t){if(!t)return;let n=e.n.safeParse(t);if(n.success)return[n.data];if(!Array.isArray(t))return;let r=[];for(let n of t){let t=e.n.safeParse(n);t.success&&r.push(t.data)}return r.length>0?r:void 0}function T(e){if(!(0,d.isSetObject)(e))return;let t=oe.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function E(e){return(0,d.isSetObject)(e)&&`path`in e}async function ue(e){let t=(0,u.joinPaths)(e,`package.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}let r={};(0,f.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,f.isSetString)(n.description)&&(r.description=n.description),(0,f.isSetString)(n.version)&&(r.version=n.version),(0,f.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=le(n.repository);if(i&&(r.repository=i),(0,d.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,d.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(f.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,c;E(a)?c=w(a):(0,d.isSetObject)(a)&&(o=T(a),`files`in a&&(c=w(a.files)));let p=C(o??{},r);return c?.length&&(p.files=c),Object.keys(p).length>0?p:void 0}async function de(e){let t=(0,u.joinPaths)(e,`component.json`);if(!(0,s.existsSync)(t))return;let n;try{n=await(0,l.readJsonFile)(t)}catch{return}if(E(n)||Array.isArray(n)){let e=w(n);if(e)return{files:e}}return T(n)}async function fe(t){let n=await ue(t),r=await de(t);if(!n&&!r)return;let i=C(r??{},n??{}),a=(0,m.basename)(t),o=(0,f.isSetString)(i.name)?i.name:a,s=(0,f.isSetString)(i.title)?i.title:o,c=e.r.safeParse({...i,name:o,title:s});return c.success?c.data:void 0}async function pe(e){let t={},n=ce(e.options.componentsPath);for(let r of n){let n=se(e.cwd,r);if(!(!(0,s.existsSync)(n)||!(0,c.isDirectory)(n)))try{let e=await(0,p.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await fe((0,u.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const D=b.default.homedir();async function O(e,t){let n=t.configFile&&(0,y.existsSync)((0,g.replacePath)(t.configFile,e))?(0,g.replacePath)(t.configFile,e):t.configFile&&(0,y.existsSync)(t.configFile)?t.configFile:(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.ts`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.ts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.js`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.js`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.mts`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.mts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.${t.mode}.config.mjs`))?(0,u.joinPaths)(e,`razorwind.${t.mode}.config.mjs`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.ts`))?(0,u.joinPaths)(e,`razorwind.config.ts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.js`))?(0,u.joinPaths)(e,`razorwind.config.js`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.mts`))?(0,u.joinPaths)(e,`razorwind.config.mts`):(0,y.existsSync)((0,u.joinPaths)(e,`razorwind.config.mjs`))?(0,u.joinPaths)(e,`razorwind.config.mjs`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},o=(0,te.createJiti)(e,i),s={};if(n){let r=await o.import(o.esmResolve(n));if(r?.default){let i={};(0,_.isFunction)(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):((0,d.isSetObject)(r.default)||Array.isArray(r.default))&&(i=r.default),((0,d.isSetObject)(i)||Array.isArray(i))&&(s={...i,configFile:n})}}let[c,l,p]=await Promise.all([(0,v.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,v.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,v.loadConfig)({cwd:D,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),m=(0,a.defu)({cwd:e,envPaths:{...r,home:D}},t,s,(0,d.isSetObject)(c?.config)?{...c.config}:{},(0,d.isSetObject)(l?.config)?{...l.config}:{},(0,d.isSetObject)(p?.config)?{...p.config}:{},{componentsPath:e,plugins:[]});if(Array.isArray(m.componentsPath)){let t=m.componentsPath.filter(f.isSetString).map(e=>(0,h.findFilePath)(e));m.componentsPath=t.length>0?t:e}else m.componentsPath=(0,f.isSetString)(m.componentsPath)?(0,h.findFilePath)(m.componentsPath):e;return Array.isArray(m.plugins)||(m.plugins=[]),m}const me=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],k=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],he=k.join(`,`),ge=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],_e=`**/*.{${he}}`,ve=/^(light|dark|dim|dimmed|high-contrast|hc|default|base|theme)([._-].+)?$/i,ye={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},be=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,A=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,j=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,M=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,N=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,xe=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,Se=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,Ce=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,we=/^\{[^{}]+\}$/,Te={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},P=new Set([`px`,`rem`]);function F(e){return Math.min(1,Math.max(0,e))}function I(e,t=100){let n=e.trim();if(n.endsWith(`%`))return F(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return F(r>1?r/255:r)}function Ee(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function De(e){let t=Ee(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function Oe(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function L(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function R(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=ye[n];if(r)return r}}function z(e,n=[]){let r=R(n);if(typeof e==`string`){let t=e.trim();if(we.test(t))return{value:t,type:r};let i=t.match(Ce);if(i?.[1])return{value:Oe(i[1]),type:r};if(be.test(t))return{value:De(t),type:`color`};let a=t.match(A);if(a){let e=[I(a[1]),I(a[2]),I(a[3])],t=a[4]?a[4].endsWith(`%`)?F(Number.parseFloat(a[4])/100):F(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=t.match(j);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?F(Number.parseFloat(o[4])/100):F(Number.parseFloat(o[4]))}:{}},type:`color`};let s=t.match(M);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?F(Number.parseFloat(s[4])/100):F(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=t.match(N);if(c){let e=c[2].toLowerCase(),n=Number.parseFloat(c[1]);return P.has(e)?{value:{value:n,unit:e},type:`dimension`}:{value:t,type:r===`dimension`?void 0:r}}let l=t.match(xe);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=t.match(Se);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=Te[t.toLowerCase()];return d===void 0?r===`fontFamily`||/family|font|typeface/i.test(n.at(-1)??``)?t.includes(`,`)?{value:t.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:t.replace(/^["']|["']$/g,``),type:`fontFamily`}:r===`color`&&!t.startsWith(`{`)?{value:t,type:void 0}:{value:t,type:r}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return r===`fontWeight`?{value:e,type:`fontWeight`}:r===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:r===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:r??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(r===`cubicBezier`||n.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:r??`fontFamily`}:{value:e,type:r};if(t.isObject(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:P.has(t)?{value:e,type:`dimension`}:{value:e,type:r}}}return{value:e,type:r}}function ke(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=z(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function B(e,n=[]){if(Array.isArray(e))return e.map((e,t)=>B(e,[...n,String(t)]));if(!t.isObject(e))return e;if(L(e))return ke(e,n);let r={};for(let[t,i]of Object.entries(e)){if(t.startsWith(`$`)){r[t]=i;continue}r[t]=B(i,[...n,t])}if(!(`$type`in r)){let e=R(n);e&&n.length>0&&(r.$type=e)}return r}function Ae(e){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=n;for(let n=0;n<e.length-1;n++){let r=e[n],i=a[r];t.isObject(i)?L(i)&&(a[r]={DEFAULT:i}):a[r]={},a=a[r]}let o=e.at(-1),s=z(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];t.isObject(l)&&!L(l)?l.DEFAULT=c:a[o]=c}return B(n)}const je=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function V(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(je)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return Ae(t)}const H=`razorwind-infer`;function U(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return B(e)}function Me(e){try{return U(S.default.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function Ne(e){try{return U((0,ie.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function Pe(e){try{return U((0,re.parse)(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const W=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>Me(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>Ne(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>Pe(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>B(V(e))}];function Fe(){return Object.fromEntries(W.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function G(e){return B(e)}function Ie(){return{[H]:G}}function K(e=[],t=o.default){for(let e of W)t.registerParser(e);t.registerPreprocessor({name:H,preprocessor:G});let n=0,r=0;for(let i of e){for(let e of i.parsers??[])t.registerParser({name:e.name??`${i.name}-parser-${n}`,pattern:e.pattern,parser:({contents:t})=>e.parser(t)}),n++;for(let e of i.preprocessors??[])t.registerPreprocessor((0,_.isFunction)(e)?{name:`${i.name}-preprocessor-${r}`,preprocessor:e}:{name:e.name??`${i.name}-preprocessor-${r}`,preprocessor:e.preprocessor}),r++}}function q(e,t){return(0,m.isAbsolute)(t)?t:(0,m.resolve)(e,t)}function J(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function Y(e){return k.includes(J(e))}function X(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function Z(e){return(0,u.joinPaths)(e,_e)}function Le(e){return Array.isArray(e)?e.filter(f.isSetString):(0,f.isSetString)(e)?[e]:[]}function Re(e,t){let n=q(e,t);if(!(0,s.existsSync)(n))throw Error(`tokensPath "${t}" does not exist (resolved: ${n}).`);return(0,c.isDirectory)(n)?{resolvedPath:n,source:[Z(n)],isStyleDictionaryConfig:!1}:X(n)?{resolvedPath:n,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:n,source:[n],isStyleDictionaryConfig:!1}}function ze(e){let{cwd:t,tokensPath:n,fallbackPaths:r=[]}=e,i=Le(n);if(i.length>0){let e=i.map(e=>Re(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of ge){let n=q(t,e);if((0,s.existsSync)(n)){if((0,c.isDirectory)(n))return{resolvedPath:n,source:[Z(n)],origin:`default`};if(X(n))return{resolvedPath:n,source:[],origin:`default`};if(Y(n))return{resolvedPath:n,source:[n],origin:`default`}}}for(let e of r){if(!e)continue;let n=q(t,e);if(!(!(0,s.existsSync)(n)||(0,c.isDirectory)(n))&&(Y(n)||J(n)===`css`))return{resolvedPath:n,source:[n],origin:`fallback`}}return{source:[],origin:`none`}}function Be(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(ve)?.[1]?.toLowerCase()}function Ve(e){K(e.plugins,o.default)}function He(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Ue(e){let t=await(0,ne.importModule)(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Q(e,t){Ve(e);let n=new o.default({...t,parsers:[...me,...t.parsers??[]],preprocessors:[H,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...Fe(),...t.hooks?.parsers},preprocessors:{...Ie(),...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}});return await n.hasInitialized,n}async function $(e,t){return t.length===0?{}:(await Q(e,{source:t})).tokens}async function We(e){return(await(0,x.default)(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Ge(e,t){let n=await We(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=Be(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return $(e,t);let a={};if(i.length>0){let t=await $(e,i);He(t)||(a.base=t)}for(let[t,n]of r)a[t]=await $(e,n);return a}async function Ke(e){let t=ze(e.options);return t.resolvedPath&&(0,s.existsSync)(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test((0,m.basename)(t.resolvedPath))?(e.sd=await Q(e.options,await Ue(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Ge(e.options,t.source):$(e.options,t.source)}function qe(e){return e}const Je=(0,r.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens and components.`,version:ae,tags:[`razorwind`,`dtcg`]},schema:(0,r.defineSchema)({schema:e.t}),input:async e=>{let t=(0,r.useExecution)();if(t.options=await O(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.`);K(t.options.plugins,o.default);let n=t.options.tokens;(!n||(0,i.isEmptyObject)(n))&&(n=await Ke(t));let s={tokens:n??{},components:(0,a.defu)(t.options.components??{},await pe(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))s=await e.extract(s,t.options);if(!s.tokens||(0,i.isEmptyObject)(s.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let e of t.options.plugins.filter(e=>e.validate))await e.validate(s,t.options);return s},generator:async e=>{let t=(0,r.useExecution)(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=(0,a.defu)(i,n)}return n}});exports.defineConfig=qe,exports.definePlugin=n.definePlugin,exports.generator=Je,exports.resolveConfig=O;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Schema } from "./schema-BNfl9Tsw.cjs";
|
|
2
2
|
import "./index-CjW7STaT.cjs";
|
|
3
|
-
import {
|
|
3
|
+
import { a as UserConfigExport, c as UserConfigFnPromise, d as TokensParser, f as TokensPreprocessor, i as UserConfig, l as UserConfigParams, n as Config, o as UserConfigFn, r as Options, s as UserConfigFnObject, t as definePlugin, u as Plugin } from "./plugin-CCSoeiLW.cjs";
|
|
4
4
|
import StyleDictionary from "style-dictionary";
|
|
5
5
|
import { GeneratorConfig } from "@power-plant/core";
|
|
6
6
|
//#region src/lib/resolve-config.d.ts
|
|
@@ -64,9 +64,10 @@ declare module "@power-plant/core" {
|
|
|
64
64
|
/**
|
|
65
65
|
* A Power Plant generator for Razorwind.
|
|
66
66
|
*
|
|
67
|
-
* Orchestrates configured {@link Plugin}s:
|
|
67
|
+
* Orchestrates configured {@link Plugin}s: extraction hooks, then
|
|
68
|
+
* `extract` → `validate` on input, then `generate`.
|
|
68
69
|
*/
|
|
69
70
|
declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
|
|
70
71
|
//#endregion
|
|
71
|
-
export { type Config, type Generator, type Options, type Plugin, type
|
|
72
|
+
export { type Config, type Generator, type Options, type Plugin, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, defineConfig, definePlugin, generator, resolveConfig };
|
|
72
73
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/resolve-config.ts","../src/config.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;iBA8CsB,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBCEK,aAAa,QAAQ,aAAa;iBAClC,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,QAAQ,cAAc,QAAQ;iBACnD,aACd,QAAQ,QAAQ,gBACf,QAAQ;iBACK,aAAa,QAAQ,qBAAqB;iBAC1C,aAAa,QAAQ,sBAAsB;iBAC3C,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,mBAAmB;;;KCvC5C,UAAU,oCAAoC,gBACxD,QACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;YCGU;IACR,IAAI
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/resolve-config.ts","../src/config.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;iBA8CsB,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBCEK,aAAa,QAAQ,aAAa;iBAClC,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,QAAQ,cAAc,QAAQ;iBACnD,aACd,QAAQ,QAAQ,gBACf,QAAQ;iBACK,aAAa,QAAQ,qBAAqB;iBAC1C,aAAa,QAAQ,sBAAsB;iBAC3C,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,mBAAmB;;;KCvC5C,UAAU,oCAAoC,gBACxD,QACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;YCGU;IACR,IAAI;;;;;;;;;cAaK,uCAAS,sBAAA,QAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Schema } from "./schema-BNfl9Tsw.mjs";
|
|
2
2
|
import "./index--y-fo2Lr.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { a as UserConfigExport, c as UserConfigFnPromise, d as TokensParser, f as TokensPreprocessor, i as UserConfig, l as UserConfigParams, n as Config, o as UserConfigFn, r as Options, s as UserConfigFnObject, t as definePlugin, u as Plugin } from "./plugin-B1R5dPEv.mjs";
|
|
4
4
|
import { GeneratorConfig } from "@power-plant/core";
|
|
5
5
|
import StyleDictionary from "style-dictionary";
|
|
6
6
|
//#region src/lib/resolve-config.d.ts
|
|
@@ -64,9 +64,10 @@ declare module "@power-plant/core" {
|
|
|
64
64
|
/**
|
|
65
65
|
* A Power Plant generator for Razorwind.
|
|
66
66
|
*
|
|
67
|
-
* Orchestrates configured {@link Plugin}s:
|
|
67
|
+
* Orchestrates configured {@link Plugin}s: extraction hooks, then
|
|
68
|
+
* `extract` → `validate` on input, then `generate`.
|
|
68
69
|
*/
|
|
69
70
|
declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
|
|
70
71
|
//#endregion
|
|
71
|
-
export { type Config, type Generator, type Options, type Plugin, type
|
|
72
|
+
export { type Config, type Generator, type Options, type Plugin, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, defineConfig, definePlugin, generator, resolveConfig };
|
|
72
73
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t,r as n}from"./schema-Bxzw_P4l.mjs";import{isObject as r}from"./utils/index.mjs";import{definePlugin as i}from"./plugin.mjs";import{defineGenerator as a,defineSchema as o,useExecution as s}from"@power-plant/core";import{isEmptyObject as c}from"@stryke/type-checks/is-empty-object";import{createDefu as l,defu as u}from"defu";import d from"style-dictionary";import{existsSync as f}from"@stryke/fs/exists";import{isDirectory as p}from"@stryke/fs/is-file";import{readJsonFile as m}from"@stryke/fs/json";import{joinPaths as h}from"@stryke/path/join";import{isSetObject as g}from"@stryke/type-checks/is-set-object";import{isSetString as _}from"@stryke/type-checks/is-set-string";import{readdir as ee}from"node:fs/promises";import{basename as v,isAbsolute as y,resolve as b}from"node:path";import{getEnvPaths as te}from"@stryke/env";import{findFilePath as x}from"@stryke/path/find";import{replacePath as S}from"@stryke/path/replace";import{isFunction as C}from"@stryke/type-checks/is-function";import{loadConfig as w}from"c12";import{createJiti as ne}from"jiti";import{existsSync as T}from"node:fs";import E from"node:os";import{importModule as re}from"@stryke/fs/resolve";import ie from"fast-glob";import ae from"json5";import{parse as oe}from"smol-toml";import{parse as se}from"yaml";var ce=`0.0.14`;const le=e.partial(),D=l((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ue(e,t){return y(t)?t:b(e,t)}function de(e){return Array.isArray(e)?e.filter(_):_(e)?[e]:[]}function fe(e){if(_(e))return e;if(g(e)&&`url`in e&&_(e.url))return e.url}function O(e){if(!e)return;let n=t.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function k(e){if(!g(e))return;let t=le.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function A(e){return g(e)&&`path`in e}async function pe(e){let t=h(e,`package.json`);if(!f(t))return;let n;try{n=await m(t)}catch{return}let r={};_(n.name)&&(r.name=n.name,r.title=n.name),_(n.description)&&(r.description=n.description),_(n.version)&&(r.version=n.version),_(n.homepage)&&(r.homepage=n.homepage);let i=fe(n.repository);if(i&&(r.repository=i),g(n.dependencies)&&(r.dependencies=n.dependencies),g(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(_);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;A(a)?s=O(a):g(a)&&(o=k(a),`files`in a&&(s=O(a.files)));let c=D(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function me(e){let t=h(e,`component.json`);if(!f(t))return;let n;try{n=await m(t)}catch{return}if(A(n)||Array.isArray(n)){let e=O(n);if(e)return{files:e}}return k(n)}async function he(t){let n=await pe(t),r=await me(t);if(!n&&!r)return;let i=D(r??{},n??{}),a=v(t),o=_(i.name)?i.name:a,s=_(i.title)?i.title:o,c=e.safeParse({...i,name:o,title:s});return c.success?c.data:void 0}async function ge(e){let t={},n=de(e.options.componentsPath);for(let r of n){let n=ue(e.cwd,r);if(!(!f(n)||!p(n)))try{let e=await ee(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await he(h(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const j=E.homedir();async function M(e,t){let n=t.configFile&&T(S(t.configFile,e))?S(t.configFile,e):t.configFile&&T(t.configFile)?t.configFile:T(h(e,`razorwind.${t.mode}.config.ts`))?h(e,`razorwind.${t.mode}.config.ts`):T(h(e,`razorwind.${t.mode}.config.js`))?h(e,`razorwind.${t.mode}.config.js`):T(h(e,`razorwind.${t.mode}.config.mts`))?h(e,`razorwind.${t.mode}.config.mts`):T(h(e,`razorwind.${t.mode}.config.mjs`))?h(e,`razorwind.${t.mode}.config.mjs`):T(h(e,`razorwind.config.ts`))?h(e,`razorwind.config.ts`):T(h(e,`razorwind.config.js`))?h(e,`razorwind.config.js`):T(h(e,`razorwind.config.mts`))?h(e,`razorwind.config.mts`):T(h(e,`razorwind.config.mjs`))?h(e,`razorwind.config.mjs`):void 0,r=te({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=ne(e,i),o={};if(n){let r=await a.import(a.esmResolve(n));if(r?.default){let i={};C(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):(g(r.default)||Array.isArray(r.default))&&(i=r.default),(g(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([w({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),w({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),w({cwd:j,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=u({cwd:e,envPaths:{...r,home:j}},t,o,g(s?.config)?{...s.config}:{},g(c?.config)?{...c.config}:{},g(l?.config)?{...l.config}:{},{componentsPath:e,plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(_).map(e=>x(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=_(d.componentsPath)?x(d.componentsPath):e;return Array.isArray(d.plugins)||(d.plugins=[]),d}const _e=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],N=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],ve=N.join(`,`),ye=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],P=`**/*.{${ve}}`,be=/^(light|dark|dim|dimmed|high-contrast|hc|default|base|theme)([._-].+)?$/i,xe={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},Se=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Ce=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,we=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,Te=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,Ee=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,De=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,Oe=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,ke=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,Ae=/^\{[^{}]+\}$/,je={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},F=new Set([`px`,`rem`]);function I(e){return Math.min(1,Math.max(0,e))}function L(e,t=100){let n=e.trim();if(n.endsWith(`%`))return I(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return I(r>1?r/255:r)}function Me(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function Ne(e){let t=Me(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function Pe(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function R(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function z(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=xe[n];if(r)return r}}function B(e,t=[]){let n=z(t);if(typeof e==`string`){let r=e.trim();if(Ae.test(r))return{value:r,type:n};let i=r.match(ke);if(i?.[1])return{value:Pe(i[1]),type:n};if(Se.test(r))return{value:Ne(r),type:`color`};let a=r.match(Ce);if(a){let e=[L(a[1]),L(a[2]),L(a[3])],t=a[4]?a[4].endsWith(`%`)?I(Number.parseFloat(a[4])/100):I(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=r.match(we);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?I(Number.parseFloat(o[4])/100):I(Number.parseFloat(o[4]))}:{}},type:`color`};let s=r.match(Te);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?I(Number.parseFloat(s[4])/100):I(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=r.match(Ee);if(c){let e=c[2].toLowerCase(),t=Number.parseFloat(c[1]);return F.has(e)?{value:{value:t,unit:e},type:`dimension`}:{value:r,type:n===`dimension`?void 0:n}}let l=r.match(De);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=r.match(Oe);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=je[r.toLowerCase()];return d===void 0?n===`fontFamily`||/family|font|typeface/i.test(t.at(-1)??``)?r.includes(`,`)?{value:r.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:r.replace(/^["']|["']$/g,``),type:`fontFamily`}:n===`color`&&!r.startsWith(`{`)?{value:r,type:void 0}:{value:r,type:n}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return n===`fontWeight`?{value:e,type:`fontWeight`}:n===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:n===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:n??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(n===`cubicBezier`||t.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:n??`fontFamily`}:{value:e,type:n};if(r(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:F.has(t)?{value:e,type:`dimension`}:{value:e,type:n}}}return{value:e,type:n}}function Fe(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=B(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function V(e,t=[]){if(Array.isArray(e))return e.map((e,n)=>V(e,[...t,String(n)]));if(!r(e))return e;if(R(e))return Fe(e,t);let n={};for(let[r,i]of Object.entries(e)){if(r.startsWith(`$`)){n[r]=i;continue}n[r]=V(i,[...t,r])}if(!(`$type`in n)){let e=z(t);e&&t.length>0&&(n.$type=e)}return n}function Ie(e){let t={};for(let[n,i]of Object.entries(e)){let e=n.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=t;for(let t=0;t<e.length-1;t++){let n=e[t],i=a[n];r(i)?R(i)&&(a[n]={DEFAULT:i}):a[n]={},a=a[n]}let o=e.at(-1),s=B(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];r(l)&&!R(l)?l.DEFAULT=c:a[o]=c}return V(t)}const Le=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function Re(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(Le)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return Ie(t)}const H=`razorwind-infer`;function U(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return V(e)}function ze(e){try{return U(ae.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function Be(e){try{return U(se(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function Ve(e){try{return U(oe(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const W=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>ze(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>Be(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>Ve(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>V(Re(e))}];function He(){return Object.fromEntries(W.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function G(e){return V(e)}function Ue(){return{[H]:G}}function K(e=[],t=d){for(let e of W)t.registerParser(e);t.registerPreprocessor({name:H,preprocessor:G});let n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=0;for(let u of e){for(let e of u.parsers??[])t.registerParser({name:e.name??`${u.name}-parser-${n}`,pattern:e.pattern,parser:({contents:t})=>e.parser(t)}),n++;for(let e of u.preprocessors??[])t.registerPreprocessor(C(e)?{name:`${u.name}-preprocessor-${r}`,preprocessor:e}:{name:e.name??`${u.name}-preprocessor-${r}`,preprocessor:e.preprocessor}),r++;for(let e of u.transforms??[])t.registerTransform({...e,name:e.name??`${u.name}-transform-${i}`}),i++;for(let e of u.transformGroups??[])t.registerTransformGroup({name:e.name??`${u.name}-transform-group-${a}`,transforms:e.transforms}),a++;for(let e of u.formats??[])t.registerFormat({...e,name:e.name??`${u.name}-format-${o}`}),o++;for(let e of u.filters??[])t.registerFilter(C(e)?{name:`${u.name}-filter-${s}`,filter:e}:{name:e.name??`${u.name}-filter-${s}`,filter:e.filter}),s++;for(let e of u.fileHeaders??[])t.registerFileHeader(C(e)?{name:`${u.name}-file-header-${c}`,fileHeader:e}:{name:e.name??`${u.name}-file-header-${c}`,fileHeader:e.fileHeader}),c++;for(let e of u.actions??[])t.registerAction({...e,name:e.name??`${u.name}-action-${l}`}),l++}}function q(e,t){return y(t)?t:b(e,t)}function J(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function Y(e){return N.includes(J(e))}function X(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function Z(e){return h(e,P)}function We(e){return Array.isArray(e)?e.filter(_):_(e)?[e]:[]}function Ge(e,t){let n=q(e,t);if(!f(n))throw Error(`tokensPath "${t}" does not exist (resolved: ${n}).`);return p(n)?{resolvedPath:n,source:[Z(n)],isStyleDictionaryConfig:!1}:X(n)?{resolvedPath:n,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:n,source:[n],isStyleDictionaryConfig:!1}}function Ke(e){let{cwd:t,tokensPath:n,fallbackPaths:r=[]}=e,i=We(n);if(i.length>0){let e=i.map(e=>Ge(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of ye){let n=q(t,e);if(f(n)){if(p(n))return{resolvedPath:n,source:[Z(n)],origin:`default`};if(X(n))return{resolvedPath:n,source:[],origin:`default`};if(Y(n))return{resolvedPath:n,source:[n],origin:`default`}}}for(let e of r){if(!e)continue;let n=q(t,e);if(!(!f(n)||p(n))&&(Y(n)||J(n)===`css`))return{resolvedPath:n,source:[n],origin:`fallback`}}return{source:[],origin:`none`}}function qe(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(be)?.[1]?.toLowerCase()}function Je(e){K(e.plugins,d)}function Ye(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Xe(e){let t=await re(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Q(e,t){Je(e);let n=new d({...t,parsers:[..._e,...t.parsers??[]],preprocessors:[H,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...He(),...t.hooks?.parsers},preprocessors:{...Ue(),...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}});return await n.hasInitialized,n}async function $(e,t){return t.length===0?{}:(await Q(e,{source:t})).tokens}async function Ze(e){return(await ie(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Qe(e,t){let n=await Ze(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=qe(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return $(e,t);let a={};if(i.length>0){let t=await $(e,i);Ye(t)||(a.base=t)}for(let[t,n]of r)a[t]=await $(e,n);return a}async function $e(e){let t=Ke(e.options);return t.resolvedPath&&f(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test(v(t.resolvedPath))?(e.sd=await Q(e.options,await Xe(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Qe(e.options,t.source):$(e.options,t.source)}function et(e){return e}const tt=a({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens and components.`,version:ce,tags:[`razorwind`,`dtcg`]},schema:o({schema:n}),input:async e=>{let t=s();if(t.options=await M(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.`);K(t.options.plugins,d);let n=t.options.tokens;(!n||c(n))&&(n=await $e(t));let r={tokens:n??{},components:u(t.options.components??{},await ge(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||c(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=s(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=u(i,n)}return n}});export{et as defineConfig,i as definePlugin,tt as generator,M as resolveConfig};
|
|
1
|
+
import{a as e,i as t,r as n}from"./schema-Bxzw_P4l.mjs";import{isObject as r}from"./utils/index.mjs";import{definePlugin as i}from"./plugin.mjs";import{defineGenerator as a,defineSchema as o,useExecution as s}from"@power-plant/core";import{isEmptyObject as c}from"@stryke/type-checks/is-empty-object";import{createDefu as l,defu as u}from"defu";import d from"style-dictionary";import{existsSync as f}from"@stryke/fs/exists";import{isDirectory as p}from"@stryke/fs/is-file";import{readJsonFile as m}from"@stryke/fs/json";import{joinPaths as h}from"@stryke/path/join";import{isSetObject as g}from"@stryke/type-checks/is-set-object";import{isSetString as _}from"@stryke/type-checks/is-set-string";import{readdir as ee}from"node:fs/promises";import{basename as v,isAbsolute as y,resolve as b}from"node:path";import{getEnvPaths as te}from"@stryke/env";import{findFilePath as x}from"@stryke/path/find";import{replacePath as S}from"@stryke/path/replace";import{isFunction as C}from"@stryke/type-checks/is-function";import{loadConfig as w}from"c12";import{createJiti as ne}from"jiti";import{existsSync as T}from"node:fs";import re from"node:os";import{importModule as ie}from"@stryke/fs/resolve";import ae from"fast-glob";import oe from"json5";import{parse as se}from"smol-toml";import{parse as ce}from"yaml";var le=`0.0.16`;const ue=e.partial(),E=l((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function de(e,t){return y(t)?t:b(e,t)}function fe(e){return Array.isArray(e)?e.filter(_):_(e)?[e]:[]}function pe(e){if(_(e))return e;if(g(e)&&`url`in e&&_(e.url))return e.url}function D(e){if(!e)return;let n=t.safeParse(e);if(n.success)return[n.data];if(!Array.isArray(e))return;let r=[];for(let n of e){let e=t.safeParse(n);e.success&&r.push(e.data)}return r.length>0?r:void 0}function O(e){if(!g(e))return;let t=ue.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function k(e){return g(e)&&`path`in e}async function me(e){let t=h(e,`package.json`);if(!f(t))return;let n;try{n=await m(t)}catch{return}let r={};_(n.name)&&(r.name=n.name,r.title=n.name),_(n.description)&&(r.description=n.description),_(n.version)&&(r.version=n.version),_(n.homepage)&&(r.homepage=n.homepage);let i=pe(n.repository);if(i&&(r.repository=i),g(n.dependencies)&&(r.dependencies=n.dependencies),g(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(_);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;k(a)?s=D(a):g(a)&&(o=O(a),`files`in a&&(s=D(a.files)));let c=E(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function he(e){let t=h(e,`component.json`);if(!f(t))return;let n;try{n=await m(t)}catch{return}if(k(n)||Array.isArray(n)){let e=D(n);if(e)return{files:e}}return O(n)}async function ge(t){let n=await me(t),r=await he(t);if(!n&&!r)return;let i=E(r??{},n??{}),a=v(t),o=_(i.name)?i.name:a,s=_(i.title)?i.title:o,c=e.safeParse({...i,name:o,title:s});return c.success?c.data:void 0}async function _e(e){let t={},n=fe(e.options.componentsPath);for(let r of n){let n=de(e.cwd,r);if(!(!f(n)||!p(n)))try{let e=await ee(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await ge(h(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const A=re.homedir();async function j(e,t){let n=t.configFile&&T(S(t.configFile,e))?S(t.configFile,e):t.configFile&&T(t.configFile)?t.configFile:T(h(e,`razorwind.${t.mode}.config.ts`))?h(e,`razorwind.${t.mode}.config.ts`):T(h(e,`razorwind.${t.mode}.config.js`))?h(e,`razorwind.${t.mode}.config.js`):T(h(e,`razorwind.${t.mode}.config.mts`))?h(e,`razorwind.${t.mode}.config.mts`):T(h(e,`razorwind.${t.mode}.config.mjs`))?h(e,`razorwind.${t.mode}.config.mjs`):T(h(e,`razorwind.config.ts`))?h(e,`razorwind.config.ts`):T(h(e,`razorwind.config.js`))?h(e,`razorwind.config.js`):T(h(e,`razorwind.config.mts`))?h(e,`razorwind.config.mts`):T(h(e,`razorwind.config.mjs`))?h(e,`razorwind.config.mjs`):void 0,r=te({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=ne(e,i),o={};if(n){let r=await a.import(a.esmResolve(n));if(r?.default){let i={};C(r.default)?i=await Promise.resolve(r.default({cwd:e,mode:t.mode??`development`})):(g(r.default)||Array.isArray(r.default))&&(i=r.default),(g(i)||Array.isArray(i))&&(o={...i,configFile:n})}}let[s,c,l]=await Promise.all([w({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),w({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),w({cwd:A,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=u({cwd:e,envPaths:{...r,home:A}},t,o,g(s?.config)?{...s.config}:{},g(c?.config)?{...c.config}:{},g(l?.config)?{...l.config}:{},{componentsPath:e,plugins:[]});if(Array.isArray(d.componentsPath)){let t=d.componentsPath.filter(_).map(e=>x(e));d.componentsPath=t.length>0?t:e}else d.componentsPath=_(d.componentsPath)?x(d.componentsPath):e;return Array.isArray(d.plugins)||(d.plugins=[]),d}const ve=[`razorwind-json`,`razorwind-yaml`,`razorwind-toml`,`razorwind-css`],M=[`json`,`json5`,`jsonc`,`yaml`,`yml`,`toml`,`css`,`js`,`mjs`,`cjs`,`ts`,`mts`,`cts`],ye=M.join(`,`),be=[`tokens.json`,`tokens.json5`,`tokens.jsonc`,`tokens.yaml`,`tokens.yml`,`tokens.toml`,`tokens.css`,`design-tokens.json`,`design-tokens.yaml`,`design-tokens.yml`,`tokens`,`design-tokens`,`src/tokens`,`src/design-tokens`,`packages/tokens`,`style-dictionary.config.js`,`style-dictionary.config.mjs`,`style-dictionary.config.ts`,`sd.config.js`,`sd.config.mjs`,`sd.config.ts`],N=`**/*.{${ye}}`,xe=/^(light|dark|dim|dimmed|high-contrast|hc|default|base|theme)([._-].+)?$/i,Se={color:`color`,colours:`color`,colors:`color`,colour:`color`,palette:`color`,bg:`color`,background:`color`,foreground:`color`,fg:`color`,border:`color`,fill:`color`,stroke:`color`,spacing:`dimension`,space:`dimension`,size:`dimension`,sizes:`dimension`,sizing:`dimension`,gap:`dimension`,radius:`dimension`,radii:`dimension`,rounded:`dimension`,width:`dimension`,height:`dimension`,dimension:`dimension`,dimensions:`dimension`,duration:`duration`,durations:`duration`,time:`duration`,delay:`duration`,animation:`duration`,motion:`duration`,transition:`duration`,font:`fontFamily`,fonts:`fontFamily`,fontfamily:`fontFamily`,"font-family":`fontFamily`,typeface:`fontFamily`,fontweight:`fontWeight`,"font-weight":`fontWeight`,weight:`fontWeight`,opacity:`number`,opacities:`number`,zindex:`number`,"z-index":`number`,lineheight:`number`,"line-height":`number`,letterspacing:`dimension`,"letter-spacing":`dimension`,shadow:`shadow`,shadows:`shadow`,elevation:`shadow`,gradient:`gradient`,gradients:`gradient`,typography:`typography`,text:`typography`,cubicbezier:`cubicBezier`,easing:`cubicBezier`,ease:`cubicBezier`},Ce=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,we=/^rgba?\(\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+%?)(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,Te=/^hsla?\(\s*([+\d.]+)[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%[\x09-\x0D\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*(?: |(?: \s*)?,)\s*([+\d.]+)%(?:\s*[,/]\s*([+\d.]+%?))?\s*\)$/i,Ee=/^oklch\(\s*([+\d.]+%?|none)\s+([+\d.]+|none)\s+([+\d.]+|none)(?:\s*\/\s*([+\d.]+%?))?\s*\)$/i,De=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|rem|em|%|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc)$/i,Oe=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(ms|s)$/i,ke=/^cubic-bezier\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*\)$/i,Ae=/^var\(\s*(--[\w-]+)\s*(?:,\s*(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))?\)\s*$/i,je=/^\{[^{}]+\}$/,Me={thin:100,hairline:100,extralight:200,"extra-light":200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,"semi-bold":600,demibold:600,bold:700,extrabold:800,"extra-bold":800,ultrabold:800,black:900,heavy:900},P=new Set([`px`,`rem`]);function F(e){return Math.min(1,Math.max(0,e))}function I(e,t=100){let n=e.trim();if(n.endsWith(`%`))return F(Number.parseFloat(n)/t);let r=Number.parseFloat(n);return F(r>1?r/255:r)}function Ne(e){let t=e.slice(1);return t.length===3||t.length===4?`#${[...t].map(e=>e+e).join(``)}`:(e.length===7||e.length,e)}function Pe(e){let t=Ne(e.toLowerCase()).slice(1),n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,a=t.length===8?Number.parseInt(t.slice(6,8),16)/255:void 0;return{colorSpace:`srgb`,components:[n,r,i],...a===void 0||a===1?{}:{alpha:a},hex:`#${t.slice(0,6)}`}}function Fe(e){return`{${e.replace(/^--/,``).split(`-`).filter(Boolean).join(`.`)}}`}function L(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function R(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.toLowerCase();if(!n)continue;let r=Se[n];if(r)return r}}function z(e,t=[]){let n=R(t);if(typeof e==`string`){let r=e.trim();if(je.test(r))return{value:r,type:n};let i=r.match(Ae);if(i?.[1])return{value:Fe(i[1]),type:n};if(Ce.test(r))return{value:Pe(r),type:`color`};let a=r.match(we);if(a){let e=[I(a[1]),I(a[2]),I(a[3])],t=a[4]?a[4].endsWith(`%`)?F(Number.parseFloat(a[4])/100):F(Number.parseFloat(a[4])):void 0;return{value:{colorSpace:`srgb`,components:e,...t===void 0||Number.isNaN(t)?{}:{alpha:t}},type:`color`}}let o=r.match(Te);if(o)return{value:{colorSpace:`hsl`,components:[Number.parseFloat(o[1]),Number.parseFloat(o[2]),Number.parseFloat(o[3])],...o[4]?{alpha:o[4].endsWith(`%`)?F(Number.parseFloat(o[4])/100):F(Number.parseFloat(o[4]))}:{}},type:`color`};let s=r.match(Ee);if(s){let e=e=>e===`none`?`none`:e.endsWith(`%`)?Number.parseFloat(e)/100:Number.parseFloat(e);return{value:{colorSpace:`oklch`,components:[e(s[1]),e(s[2]),e(s[3])],...s[4]?{alpha:s[4].endsWith(`%`)?F(Number.parseFloat(s[4])/100):F(Number.parseFloat(s[4]))}:{}},type:`color`}}let c=r.match(De);if(c){let e=c[2].toLowerCase(),t=Number.parseFloat(c[1]);return P.has(e)?{value:{value:t,unit:e},type:`dimension`}:{value:r,type:n===`dimension`?void 0:n}}let l=r.match(Oe);if(l)return{value:{value:Number.parseFloat(l[1]),unit:l[2].toLowerCase()},type:`duration`};let u=r.match(ke);if(u)return{value:[Number.parseFloat(u[1]),Number.parseFloat(u[2]),Number.parseFloat(u[3]),Number.parseFloat(u[4])],type:`cubicBezier`};let d=Me[r.toLowerCase()];return d===void 0?n===`fontFamily`||/family|font|typeface/i.test(t.at(-1)??``)?r.includes(`,`)?{value:r.split(`,`).map(e=>e.trim().replace(/^["']|["']$/g,``)),type:`fontFamily`}:{value:r.replace(/^["']|["']$/g,``),type:`fontFamily`}:n===`color`&&!r.startsWith(`{`)?{value:r,type:void 0}:{value:r,type:n}:{value:d,type:`fontWeight`}}if(typeof e==`number`)return n===`fontWeight`?{value:e,type:`fontWeight`}:n===`duration`?{value:{value:e,unit:`ms`},type:`duration`}:n===`dimension`?{value:{value:e,unit:`px`},type:`dimension`}:{value:e,type:n??`number`};if(Array.isArray(e))return e.length===4&&e.every(e=>typeof e==`number`)&&(n===`cubicBezier`||t.some(e=>/ease|bezier/i.test(e)))?{value:e,type:`cubicBezier`}:e.every(e=>typeof e==`string`)?{value:e,type:n??`fontFamily`}:{value:e,type:n};if(r(e)){if(`colorSpace`in e&&`components`in e)return{value:e,type:`color`};if(`value`in e&&`unit`in e){let t=String(e.unit).toLowerCase();return t===`ms`||t===`s`?{value:e,type:`duration`}:P.has(t)?{value:e,type:`dimension`}:{value:e,type:n}}}return{value:e,type:n}}function B(e,t){let n={...e};if(`value`in n&&!(`$value`in n)&&(n.$value=n.value,delete n.value),`type`in n&&!(`$type`in n)&&(n.$type=n.type,delete n.type),`comment`in n&&!(`$description`in n)&&(n.$description=n.comment,delete n.comment),`description`in n&&!(`$description`in n)&&(n.$description=n.description,delete n.description),`ref`in n&&!(`$ref`in n)&&(n.$ref=n.ref,delete n.ref),`$value`in n){let e=z(n.$value,t);n.$value=e.value,!(`$type`in n)&&e.type&&(n.$type=e.type)}return n}function V(e,t=[]){if(Array.isArray(e))return e.map((e,n)=>V(e,[...t,String(n)]));if(!r(e))return e;if(L(e))return B(e,t);let n={};for(let[r,i]of Object.entries(e)){if(r.startsWith(`$`)){n[r]=i;continue}n[r]=V(i,[...t,r])}if(!(`$type`in n)){let e=R(t);e&&t.length>0&&(n.$type=e)}return n}function Ie(e){let t={};for(let[n,i]of Object.entries(e)){let e=n.replace(/^--/,``).split(/[-./]/).filter(Boolean);if(e.length===0)continue;let a=t;for(let t=0;t<e.length-1;t++){let n=e[t],i=a[n];r(i)?L(i)&&(a[n]={DEFAULT:i}):a[n]={},a=a[n]}let o=e.at(-1),s=z(i,e),c={$value:s.value,...s.type?{$type:s.type}:{}},l=a[o];r(l)&&!L(l)?l.DEFAULT=c:a[o]=c}return V(t)}const Le=/(--[A-Z_][\w-]*)\s*:\s*([^;}{]+?)(?=\s*(?:;|\}|$))/gi;function Re(e){let t={},n=e.replace(/\/\*[\s\S]*?\*\//g,``);for(let e of n.matchAll(Le)){let n=e[1],r=e[2]?.trim();!n||!r||(t[n]=r)}return Ie(t)}const H=`razorwind-infer`;function U(e){if(e==null)return{};if(typeof e!=`object`||Array.isArray(e))throw TypeError(`Token file must parse to a plain object.`);return V(e)}function ze(e){try{return U(oe.parse(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse JSON token file: ${t}`)}}function Be(e){try{return U(ce(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse YAML token file: ${t}`)}}function Ve(e){try{return U(se(e))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse TOML token file: ${t}`)}}const W=[{name:`razorwind-json`,pattern:/\.json[c5]?$/i,parser:({contents:e})=>ze(e)},{name:`razorwind-yaml`,pattern:/\.ya?ml$/i,parser:({contents:e})=>Be(e)},{name:`razorwind-toml`,pattern:/\.toml$/i,parser:({contents:e})=>Ve(e)},{name:`razorwind-css`,pattern:/\.css$/i,parser:({contents:e})=>V(Re(e))}];function He(){return Object.fromEntries(W.map(({name:e,pattern:t,parser:n})=>[e,{pattern:t,parser:n}]))}function G(e){return V(e)}function Ue(){return{[H]:G}}function K(e=[],t=d){for(let e of W)t.registerParser(e);t.registerPreprocessor({name:H,preprocessor:G});let n=0,r=0;for(let i of e){for(let e of i.parsers??[])t.registerParser({name:e.name??`${i.name}-parser-${n}`,pattern:e.pattern,parser:({contents:t})=>e.parser(t)}),n++;for(let e of i.preprocessors??[])t.registerPreprocessor(C(e)?{name:`${i.name}-preprocessor-${r}`,preprocessor:e}:{name:e.name??`${i.name}-preprocessor-${r}`,preprocessor:e.preprocessor}),r++}}function q(e,t){return y(t)?t:b(e,t)}function J(e){return/\.([^.]+)$/.exec(e)?.[1]?.toLowerCase()??``}function Y(e){return M.includes(J(e))}function X(e){let t=e.split(/[/\\]/).pop()?.toLowerCase()??``;return t.startsWith(`style-dictionary.config.`)||t.startsWith(`sd.config.`)}function Z(e){return h(e,N)}function We(e){return Array.isArray(e)?e.filter(_):_(e)?[e]:[]}function Ge(e,t){let n=q(e,t);if(!f(n))throw Error(`tokensPath "${t}" does not exist (resolved: ${n}).`);return p(n)?{resolvedPath:n,source:[Z(n)],isStyleDictionaryConfig:!1}:X(n)?{resolvedPath:n,source:[],isStyleDictionaryConfig:!0}:{resolvedPath:n,source:[n],isStyleDictionaryConfig:!1}}function Ke(e){let{cwd:t,tokensPath:n,fallbackPaths:r=[]}=e,i=We(n);if(i.length>0){let e=i.map(e=>Ge(t,e)),n=e.filter(e=>e.isStyleDictionaryConfig);if(n.length>0){if(e.length>1)throw Error(`tokensPath cannot mix Style Dictionary config files with other token sources.`);return{resolvedPath:n[0].resolvedPath,source:[],origin:`tokensPath`}}return{resolvedPath:e[0]?.resolvedPath,source:e.flatMap(e=>e.source),origin:`tokensPath`}}for(let e of be){let n=q(t,e);if(f(n)){if(p(n))return{resolvedPath:n,source:[Z(n)],origin:`default`};if(X(n))return{resolvedPath:n,source:[],origin:`default`};if(Y(n))return{resolvedPath:n,source:[n],origin:`default`}}}for(let e of r){if(!e)continue;let n=q(t,e);if(!(!f(n)||p(n))&&(Y(n)||J(n)===`css`))return{resolvedPath:n,source:[n],origin:`fallback`}}return{source:[],origin:`none`}}function qe(e){return(e.split(/[/\\]/).pop()??``).replace(/\.[^.]+$/,``).match(xe)?.[1]?.toLowerCase()}function Je(e){K(e.plugins,d)}function Ye(e){return!e||typeof e!=`object`||Object.keys(e).length===0}async function Xe(e){let t=await ie(e);return t&&typeof t==`object`&&`default`in t&&t.default?t.default:t}async function Q(e,t){Je(e);let n=new d({...t,parsers:[...ve,...t.parsers??[]],preprocessors:[H,...t.preprocessors??[]],hooks:{...t.hooks,parsers:{...He(),...t.hooks?.parsers},preprocessors:{...Ue(),...t.hooks?.preprocessors}},usesDtcg:t.usesDtcg??!0,platforms:t.platforms??{}});return await n.hasInitialized,n}async function $(e,t){return t.length===0?{}:(await Q(e,{source:t})).tokens}async function Ze(e){return(await ae(e,{absolute:!0,onlyFiles:!0,unique:!0})).sort()}async function Qe(e,t){let n=await Ze(t);if(n.length===0)return{};let r=new Map,i=[];for(let e of n){let t=qe(e);if(t){let n=r.get(t)??[];n.push(e),r.set(t,n)}else i.push(e)}if(r.size<2)return $(e,t);let a={};if(i.length>0){let t=await $(e,i);Ye(t)||(a.base=t)}for(let[t,n]of r)a[t]=await $(e,n);return a}async function $e(e){let t=Ke(e.options);return t.resolvedPath&&f(t.resolvedPath)&&/(?:^|[/\\])(?:style-dictionary|sd)\.config\./i.test(v(t.resolvedPath))?(e.sd=await Q(e.options,await Xe(t.resolvedPath)),e.sd.tokens):t.source.length===0?{}:e.options.splitThemes?Qe(e.options,t.source):$(e.options,t.source)}function et(e){return e}const tt=a({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens and components.`,version:le,tags:[`razorwind`,`dtcg`]},schema:o({schema:n}),input:async e=>{let t=s();if(t.options=await j(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.`);K(t.options.plugins,d);let n=t.options.tokens;(!n||c(n))&&(n=await $e(t));let r={tokens:n??{},components:u(t.options.components??{},await _e(t)??{})};for(let e of t.options.plugins.filter(e=>e.extract))r=await e.extract(r,t.options);if(!r.tokens||c(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=s(),n={};for(let r of t.options.plugins.filter(e=>e.generate)){let i=await r.generate(e,t.options);n=u(i,n)}return n}});export{et as defineConfig,i as definePlugin,tt as generator,j as resolveConfig};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -4,11 +4,13 @@ import { PreprocessedTokens } from "style-dictionary";
|
|
|
4
4
|
import { EnvPaths } from "@stryke/env";
|
|
5
5
|
import { Tokens } from "@power-plant/dtcg-schema";
|
|
6
6
|
import { MaybePromise, RequiredKeys } from "@stryke/types/base";
|
|
7
|
-
import {
|
|
7
|
+
import { DesignTokens } from "style-dictionary/types";
|
|
8
8
|
//#region src/types/plugin.d.ts
|
|
9
9
|
/**
|
|
10
10
|
* Style Dictionary parser hook contributed by a plugin.
|
|
11
11
|
*
|
|
12
|
+
* Used during token extraction to load token sources.
|
|
13
|
+
*
|
|
12
14
|
* @see https://styledictionary.com/reference/hooks/parsers/
|
|
13
15
|
*/
|
|
14
16
|
interface TokensParser {
|
|
@@ -19,6 +21,8 @@ interface TokensParser {
|
|
|
19
21
|
/**
|
|
20
22
|
* Style Dictionary preprocessor hook contributed by a plugin.
|
|
21
23
|
*
|
|
24
|
+
* Used during token extraction to normalize the merged token dictionary.
|
|
25
|
+
*
|
|
22
26
|
* @see https://styledictionary.com/reference/hooks/preprocessors/
|
|
23
27
|
*/
|
|
24
28
|
type TokensPreprocessor = {
|
|
@@ -26,57 +30,10 @@ type TokensPreprocessor = {
|
|
|
26
30
|
preprocessor: (dictionary: PreprocessedTokens) => PreprocessedTokens;
|
|
27
31
|
} | ((dictionary: PreprocessedTokens) => PreprocessedTokens);
|
|
28
32
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* @see https://styledictionary.com/reference/hooks/transforms/
|
|
32
|
-
*/
|
|
33
|
-
type TokensTransform = Omit<Transform, "name"> & {
|
|
34
|
-
name?: string;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Style Dictionary transform group hook contributed by a plugin.
|
|
38
|
-
*
|
|
39
|
-
* @see https://styledictionary.com/reference/hooks/transform-groups/
|
|
40
|
-
*/
|
|
41
|
-
interface TokensTransformGroup {
|
|
42
|
-
name?: string;
|
|
43
|
-
transforms: string[];
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Style Dictionary format hook contributed by a plugin.
|
|
47
|
-
*
|
|
48
|
-
* @see https://styledictionary.com/reference/hooks/formats/
|
|
49
|
-
*/
|
|
50
|
-
type TokensFormat = Omit<Format, "name"> & {
|
|
51
|
-
name?: string;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Style Dictionary filter hook contributed by a plugin.
|
|
55
|
-
*
|
|
56
|
-
* @see https://styledictionary.com/reference/hooks/filters/
|
|
57
|
-
*/
|
|
58
|
-
type TokensFilter = (Omit<Filter, "name"> & {
|
|
59
|
-
name?: string;
|
|
60
|
-
}) | Filter["filter"];
|
|
61
|
-
/**
|
|
62
|
-
* Style Dictionary file header hook contributed by a plugin.
|
|
63
|
-
*
|
|
64
|
-
* @see https://styledictionary.com/reference/hooks/file-headers/
|
|
65
|
-
*/
|
|
66
|
-
type TokensFileHeader = {
|
|
67
|
-
name?: string;
|
|
68
|
-
fileHeader: FileHeader;
|
|
69
|
-
} | FileHeader;
|
|
70
|
-
/**
|
|
71
|
-
* Style Dictionary action hook contributed by a plugin.
|
|
33
|
+
* Razorwind plugin: extraction hooks plus extract / generate / validate.
|
|
72
34
|
*
|
|
73
|
-
*
|
|
74
|
-
|
|
75
|
-
type TokensAction = Omit<Action, "name"> & {
|
|
76
|
-
name?: string;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Razorwind plugin: Style Dictionary hooks plus extract / generate / validate.
|
|
35
|
+
* Platform generation hooks (`transforms`, `formats`, `platforms`, …) live on
|
|
36
|
+
* `@razorwind/style-dictionary` — not on the core plugin interface.
|
|
80
37
|
*
|
|
81
38
|
* @see https://styledictionary.com/reference/api/
|
|
82
39
|
*/
|
|
@@ -100,42 +57,6 @@ interface Plugin {
|
|
|
100
57
|
* @see https://styledictionary.com/reference/hooks/preprocessors/
|
|
101
58
|
*/
|
|
102
59
|
preprocessors?: TokensPreprocessor[];
|
|
103
|
-
/**
|
|
104
|
-
* Transforms that modify token names, attributes, or values per platform.
|
|
105
|
-
*
|
|
106
|
-
* @see https://styledictionary.com/reference/hooks/transforms/
|
|
107
|
-
*/
|
|
108
|
-
transforms?: TokensTransform[];
|
|
109
|
-
/**
|
|
110
|
-
* Named groups of transforms applied together in platform configuration.
|
|
111
|
-
*
|
|
112
|
-
* @see https://styledictionary.com/reference/hooks/transform-groups/
|
|
113
|
-
*/
|
|
114
|
-
transformGroups?: TokensTransformGroup[];
|
|
115
|
-
/**
|
|
116
|
-
* Output formats that turn the transformed dictionary into file contents.
|
|
117
|
-
*
|
|
118
|
-
* @see https://styledictionary.com/reference/hooks/formats/
|
|
119
|
-
*/
|
|
120
|
-
formats?: TokensFormat[];
|
|
121
|
-
/**
|
|
122
|
-
* Filters that decide which tokens are included in a platform or format.
|
|
123
|
-
*
|
|
124
|
-
* @see https://styledictionary.com/reference/hooks/filters/
|
|
125
|
-
*/
|
|
126
|
-
filters?: TokensFilter[];
|
|
127
|
-
/**
|
|
128
|
-
* File header generators that add build metadata comments to output files.
|
|
129
|
-
*
|
|
130
|
-
* @see https://styledictionary.com/reference/hooks/file-headers/
|
|
131
|
-
*/
|
|
132
|
-
fileHeaders?: TokensFileHeader[];
|
|
133
|
-
/**
|
|
134
|
-
* Post-build actions such as copying assets or running follow-up scripts.
|
|
135
|
-
*
|
|
136
|
-
* @see https://styledictionary.com/reference/hooks/actions/
|
|
137
|
-
*/
|
|
138
|
-
actions?: TokensAction[];
|
|
139
60
|
/**
|
|
140
61
|
* Extract the design tokens from the source files.
|
|
141
62
|
*
|
|
@@ -246,7 +167,10 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
246
167
|
//#endregion
|
|
247
168
|
//#region src/plugin.d.ts
|
|
248
169
|
/**
|
|
249
|
-
* Type helper for Razorwind plugins (
|
|
170
|
+
* Type helper for Razorwind plugins (`parsers` / `preprocessors` + `extract` / `validate` / `generate`).
|
|
171
|
+
*
|
|
172
|
+
* Platform generation (`platforms`, transforms, formats, …) belongs on
|
|
173
|
+
* `@razorwind/style-dictionary` plugin options — not on this interface.
|
|
250
174
|
*
|
|
251
175
|
* @see https://styledictionary.com/reference/api/
|
|
252
176
|
*
|
|
@@ -257,7 +181,7 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
257
181
|
* // As a plugin
|
|
258
182
|
* export default definePlugin({
|
|
259
183
|
* name: "my-plugin",
|
|
260
|
-
*
|
|
184
|
+
* parsers: [{ pattern: /\.foo$/, parser: contents => JSON.parse(contents) }],
|
|
261
185
|
* extract: async (spec) => {
|
|
262
186
|
* ...
|
|
263
187
|
* },
|
|
@@ -287,5 +211,5 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
287
211
|
declare function definePlugin(factory: (options?: any) => Plugin): (options?: any) => Plugin;
|
|
288
212
|
declare function definePlugin(plugin: Plugin): Plugin;
|
|
289
213
|
//#endregion
|
|
290
|
-
export {
|
|
291
|
-
//# sourceMappingURL=plugin-
|
|
214
|
+
export { UserConfigExport as a, UserConfigFnPromise as c, TokensParser as d, TokensPreprocessor as f, UserConfig as i, UserConfigParams as l, Config as n, UserConfigFn as o, Options as r, UserConfigFnObject as s, definePlugin as t, Plugin as u };
|
|
215
|
+
//# sourceMappingURL=plugin-B1R5dPEv.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-B1R5dPEv.d.mts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts","../src/plugin.ts"],"mappings":""}
|
|
@@ -4,11 +4,13 @@ import { Tokens } from "@power-plant/dtcg-schema";
|
|
|
4
4
|
import { EnvPaths } from "@stryke/env";
|
|
5
5
|
import { MaybePromise, RequiredKeys } from "@stryke/types/base";
|
|
6
6
|
import { GeneratedDocument } from "@power-plant/core";
|
|
7
|
-
import {
|
|
7
|
+
import { DesignTokens } from "style-dictionary/types";
|
|
8
8
|
//#region src/types/plugin.d.ts
|
|
9
9
|
/**
|
|
10
10
|
* Style Dictionary parser hook contributed by a plugin.
|
|
11
11
|
*
|
|
12
|
+
* Used during token extraction to load token sources.
|
|
13
|
+
*
|
|
12
14
|
* @see https://styledictionary.com/reference/hooks/parsers/
|
|
13
15
|
*/
|
|
14
16
|
interface TokensParser {
|
|
@@ -19,6 +21,8 @@ interface TokensParser {
|
|
|
19
21
|
/**
|
|
20
22
|
* Style Dictionary preprocessor hook contributed by a plugin.
|
|
21
23
|
*
|
|
24
|
+
* Used during token extraction to normalize the merged token dictionary.
|
|
25
|
+
*
|
|
22
26
|
* @see https://styledictionary.com/reference/hooks/preprocessors/
|
|
23
27
|
*/
|
|
24
28
|
type TokensPreprocessor = {
|
|
@@ -26,57 +30,10 @@ type TokensPreprocessor = {
|
|
|
26
30
|
preprocessor: (dictionary: PreprocessedTokens) => PreprocessedTokens;
|
|
27
31
|
} | ((dictionary: PreprocessedTokens) => PreprocessedTokens);
|
|
28
32
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* @see https://styledictionary.com/reference/hooks/transforms/
|
|
32
|
-
*/
|
|
33
|
-
type TokensTransform = Omit<Transform, "name"> & {
|
|
34
|
-
name?: string;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Style Dictionary transform group hook contributed by a plugin.
|
|
38
|
-
*
|
|
39
|
-
* @see https://styledictionary.com/reference/hooks/transform-groups/
|
|
40
|
-
*/
|
|
41
|
-
interface TokensTransformGroup {
|
|
42
|
-
name?: string;
|
|
43
|
-
transforms: string[];
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Style Dictionary format hook contributed by a plugin.
|
|
47
|
-
*
|
|
48
|
-
* @see https://styledictionary.com/reference/hooks/formats/
|
|
49
|
-
*/
|
|
50
|
-
type TokensFormat = Omit<Format, "name"> & {
|
|
51
|
-
name?: string;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Style Dictionary filter hook contributed by a plugin.
|
|
55
|
-
*
|
|
56
|
-
* @see https://styledictionary.com/reference/hooks/filters/
|
|
57
|
-
*/
|
|
58
|
-
type TokensFilter = (Omit<Filter, "name"> & {
|
|
59
|
-
name?: string;
|
|
60
|
-
}) | Filter["filter"];
|
|
61
|
-
/**
|
|
62
|
-
* Style Dictionary file header hook contributed by a plugin.
|
|
63
|
-
*
|
|
64
|
-
* @see https://styledictionary.com/reference/hooks/file-headers/
|
|
65
|
-
*/
|
|
66
|
-
type TokensFileHeader = {
|
|
67
|
-
name?: string;
|
|
68
|
-
fileHeader: FileHeader;
|
|
69
|
-
} | FileHeader;
|
|
70
|
-
/**
|
|
71
|
-
* Style Dictionary action hook contributed by a plugin.
|
|
33
|
+
* Razorwind plugin: extraction hooks plus extract / generate / validate.
|
|
72
34
|
*
|
|
73
|
-
*
|
|
74
|
-
|
|
75
|
-
type TokensAction = Omit<Action, "name"> & {
|
|
76
|
-
name?: string;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Razorwind plugin: Style Dictionary hooks plus extract / generate / validate.
|
|
35
|
+
* Platform generation hooks (`transforms`, `formats`, `platforms`, …) live on
|
|
36
|
+
* `@razorwind/style-dictionary` — not on the core plugin interface.
|
|
80
37
|
*
|
|
81
38
|
* @see https://styledictionary.com/reference/api/
|
|
82
39
|
*/
|
|
@@ -100,42 +57,6 @@ interface Plugin {
|
|
|
100
57
|
* @see https://styledictionary.com/reference/hooks/preprocessors/
|
|
101
58
|
*/
|
|
102
59
|
preprocessors?: TokensPreprocessor[];
|
|
103
|
-
/**
|
|
104
|
-
* Transforms that modify token names, attributes, or values per platform.
|
|
105
|
-
*
|
|
106
|
-
* @see https://styledictionary.com/reference/hooks/transforms/
|
|
107
|
-
*/
|
|
108
|
-
transforms?: TokensTransform[];
|
|
109
|
-
/**
|
|
110
|
-
* Named groups of transforms applied together in platform configuration.
|
|
111
|
-
*
|
|
112
|
-
* @see https://styledictionary.com/reference/hooks/transform-groups/
|
|
113
|
-
*/
|
|
114
|
-
transformGroups?: TokensTransformGroup[];
|
|
115
|
-
/**
|
|
116
|
-
* Output formats that turn the transformed dictionary into file contents.
|
|
117
|
-
*
|
|
118
|
-
* @see https://styledictionary.com/reference/hooks/formats/
|
|
119
|
-
*/
|
|
120
|
-
formats?: TokensFormat[];
|
|
121
|
-
/**
|
|
122
|
-
* Filters that decide which tokens are included in a platform or format.
|
|
123
|
-
*
|
|
124
|
-
* @see https://styledictionary.com/reference/hooks/filters/
|
|
125
|
-
*/
|
|
126
|
-
filters?: TokensFilter[];
|
|
127
|
-
/**
|
|
128
|
-
* File header generators that add build metadata comments to output files.
|
|
129
|
-
*
|
|
130
|
-
* @see https://styledictionary.com/reference/hooks/file-headers/
|
|
131
|
-
*/
|
|
132
|
-
fileHeaders?: TokensFileHeader[];
|
|
133
|
-
/**
|
|
134
|
-
* Post-build actions such as copying assets or running follow-up scripts.
|
|
135
|
-
*
|
|
136
|
-
* @see https://styledictionary.com/reference/hooks/actions/
|
|
137
|
-
*/
|
|
138
|
-
actions?: TokensAction[];
|
|
139
60
|
/**
|
|
140
61
|
* Extract the design tokens from the source files.
|
|
141
62
|
*
|
|
@@ -246,7 +167,10 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
246
167
|
//#endregion
|
|
247
168
|
//#region src/plugin.d.ts
|
|
248
169
|
/**
|
|
249
|
-
* Type helper for Razorwind plugins (
|
|
170
|
+
* Type helper for Razorwind plugins (`parsers` / `preprocessors` + `extract` / `validate` / `generate`).
|
|
171
|
+
*
|
|
172
|
+
* Platform generation (`platforms`, transforms, formats, …) belongs on
|
|
173
|
+
* `@razorwind/style-dictionary` plugin options — not on this interface.
|
|
250
174
|
*
|
|
251
175
|
* @see https://styledictionary.com/reference/api/
|
|
252
176
|
*
|
|
@@ -257,7 +181,7 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
257
181
|
* // As a plugin
|
|
258
182
|
* export default definePlugin({
|
|
259
183
|
* name: "my-plugin",
|
|
260
|
-
*
|
|
184
|
+
* parsers: [{ pattern: /\.foo$/, parser: contents => JSON.parse(contents) }],
|
|
261
185
|
* extract: async (spec) => {
|
|
262
186
|
* ...
|
|
263
187
|
* },
|
|
@@ -287,5 +211,5 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "plugins"> & {
|
|
|
287
211
|
declare function definePlugin(factory: (options?: any) => Plugin): (options?: any) => Plugin;
|
|
288
212
|
declare function definePlugin(plugin: Plugin): Plugin;
|
|
289
213
|
//#endregion
|
|
290
|
-
export {
|
|
291
|
-
//# sourceMappingURL=plugin-
|
|
214
|
+
export { UserConfigExport as a, UserConfigFnPromise as c, TokensParser as d, TokensPreprocessor as f, UserConfig as i, UserConfigParams as l, Config as n, UserConfigFn as o, Options as r, UserConfigFnObject as s, definePlugin as t, Plugin as u };
|
|
215
|
+
//# sourceMappingURL=plugin-CCSoeiLW.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-CCSoeiLW.d.cts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts","../src/plugin.ts"],"mappings":";;;;;;;;;;;;;;;UAgCiB;EACf;EACA,SAAS;EACT,SAAS,qBAAqB;;;;;;;;;KAUpB;EAEN;EACA,eAAe,YAAY,uBAAuB;MAElD,YAAY,uBAAuB;;;;;;;;;UAUxB;;;;;;;EAOf;;;;;;EAOA,UAAU;;;;;;EAOV,gBAAgB;;;;;;;;EAShB,WAAW,MAAM,QAAQ,QAAQ,WAAW,aAAa;;;;;;;;EASzD,YACE,MAAM,QACN,QAAQ,WACL,aAAa,eAAe;;;;;;;;EASjC,YAAY,MAAM,QAAQ,QAAQ,WAAW;;;;UCvF9B;;;;;;EAMf;;;;EAKA;;;;;;;;EASA;;;;;;EAOA;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA;;UAGe,mBAAmB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,SAAS,eAAe;EACjC,aAAa;EACb,UAAU;;UAGK;EACf;EACA;;KAGU,sBAAsB,QAAQ,eAAe;KAC7C,uBACV,QAAQ,qBACL,QAAQ,aAAa;KACd,gBACV,QAAQ,qBACL,aAAa,eAAe,QAAQ,aAAa;KAC1C,mBACR,aACA,eACA,QAAQ,aAAa,gBACrB,qBACA,sBACA;KAEQ,SAAS,aAAa;EAChC;EACA,UAAU;IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCvDY,aACd,UAAU,kBAAkB,UAC1B,kBAAkB;iBACN,aAAa,QAAQ,SAAS"}
|
package/dist/plugin.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { type Plugin, type
|
|
1
|
+
import { d as TokensParser, f as TokensPreprocessor, t as definePlugin, u as Plugin } from "./plugin-CCSoeiLW.cjs";
|
|
2
|
+
export { type Plugin, type TokensParser, type TokensPreprocessor, definePlugin };
|
package/dist/plugin.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { type Plugin, type
|
|
1
|
+
import { d as TokensParser, f as TokensPreprocessor, t as definePlugin, u as Plugin } from "./plugin-B1R5dPEv.mjs";
|
|
2
|
+
export { type Plugin, type TokensParser, type TokensPreprocessor, definePlugin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-BNfl9Tsw.d.cts","names":[],"sources":["../src/schema/components.ts","../src/schema/schema.ts"],"mappings":";;;cAoBa,qBAAmB,IAAA;;;;;;;;;;;;;;;;;;GAuB9B,IAAA,KAAA;KAEU,gBAAgB,IAAE,aAAa;cAE9B,iBAAe,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgB1B,IAAA,KAAA;KAEU,YAAY,IAAE,aAAa;cAE1B,kBAAgB,IAAA,UAAA,IAAA,WAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAwC,IAAA,KAAA;KAEzD,aAAa,IAAE,aAAa;;;
|
|
1
|
+
{"version":3,"file":"schema-BNfl9Tsw.d.cts","names":[],"sources":["../src/schema/components.ts","../src/schema/schema.ts"],"mappings":";;;cAoBa,qBAAmB,IAAA;;;;;;;;;;;;;;;;;;GAuB9B,IAAA,KAAA;KAEU,gBAAgB,IAAE,aAAa;cAE9B,iBAAe,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgB1B,IAAA,KAAA;KAEU,YAAY,IAAE,aAAa;cAE1B,kBAAgB,IAAA,UAAA,IAAA,WAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAwC,IAAA,KAAA;KAEzD,aAAa,IAAE,aAAa;;;UCxCvB;EACf,YAAY;EACZ,QAAQ,SAAS,eAAe;;cAGrB,QAAQ,EAAE,QAAQ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@razorwind/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
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"],
|
|
@@ -104,18 +104,17 @@
|
|
|
104
104
|
"typings": "dist/index.d.mts",
|
|
105
105
|
"files": ["dist"],
|
|
106
106
|
"dependencies": {
|
|
107
|
-
"@power-plant/core": "^0.0.
|
|
107
|
+
"@power-plant/core": "^0.0.61",
|
|
108
108
|
"@power-plant/dtcg-schema": "^0.0.1",
|
|
109
|
-
"@power-plant/schema": "^0.0.
|
|
110
|
-
"@power-plant/
|
|
111
|
-
"@
|
|
112
|
-
"@stryke/
|
|
113
|
-
"@stryke/
|
|
114
|
-
"@stryke/
|
|
115
|
-
"@stryke/
|
|
116
|
-
"@stryke/
|
|
117
|
-
"@stryke/
|
|
118
|
-
"@stryke/url": "^0.4.49",
|
|
109
|
+
"@power-plant/schema": "^0.0.59",
|
|
110
|
+
"@power-plant/utils": "^0.0.47",
|
|
111
|
+
"@stryke/env": "^0.20.117",
|
|
112
|
+
"@stryke/fs": "^0.33.100",
|
|
113
|
+
"@stryke/path": "^0.29.26",
|
|
114
|
+
"@stryke/string-format": "^0.17.41",
|
|
115
|
+
"@stryke/type-checks": "^0.6.32",
|
|
116
|
+
"@stryke/types": "^0.12.27",
|
|
117
|
+
"@stryke/url": "^0.4.50",
|
|
119
118
|
"c12": "^3.3.4",
|
|
120
119
|
"defu": "^6.1.7",
|
|
121
120
|
"fast-glob": "^3.3.3",
|
|
@@ -127,10 +126,10 @@
|
|
|
127
126
|
"zod": "^4.4.3"
|
|
128
127
|
},
|
|
129
128
|
"devDependencies": {
|
|
130
|
-
"@powerlines/plugin-tsdown": "^0.1.
|
|
129
|
+
"@powerlines/plugin-tsdown": "^0.1.581",
|
|
131
130
|
"@types/node": "^25.9.5",
|
|
132
131
|
"typescript": "^6.0.3"
|
|
133
132
|
},
|
|
134
133
|
"publishConfig": { "access": "public" },
|
|
135
|
-
"gitHead": "
|
|
134
|
+
"gitHead": "6055ce9d20a4488ee965a471c76c51380e2e85af"
|
|
136
135
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-CUtxHXKj.d.cts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts","../src/plugin.ts"],"mappings":";;;;;;;;;;;;;UAqCiB;EACf;EACA,SAAS;EACT,SAAS,qBAAqB;;;;;;;KAQpB;EAEN;EACA,eAAe,YAAY,uBAAuB;MAElD,YAAY,uBAAuB;;;;;;KAO7B,kBAAkB,KAAK;EAAuB;;;;;;;UAOzC;EACf;EACA;;;;;;;KAQU,eAAe,KAAK;EAAoB;;;;;;;KAOxC,gBACT,KAAK;EAAoB;KAAmB;;;;;;KAOnC;EAEN;EACA,YAAY;IAEd;;;;;;KAOQ,eAAe,KAAK;EAAoB;;;;;;;UAOnC;;;;;;;EAOf;;;;;;EAOA,UAAU;;;;;;EAOV,gBAAgB;;;;;;EAOhB,aAAa;;;;;;EAOb,kBAAkB;;;;;;EAOlB,UAAU;;;;;;EAOV,UAAU;;;;;;EAOV,cAAc;;;;;;EAOd,UAAU;;;;;;;;EASV,WAAW,MAAM,QAAQ,QAAQ,WAAW,aAAa;;;;;;;;EASzD,YACE,MAAM,QACN,QAAQ,WACL,aAAa,eAAe;;;;;;;;EASjC,YAAY,MAAM,QAAQ,QAAQ,WAAW;;;;UCpL9B;;;;;;EAMf;;;;EAKA;;;;;;;;EASA;;;;;;EAOA;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA;;UAGe,mBAAmB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,SAAS,eAAe;EACjC,aAAa;EACb,UAAU;;UAGK;EACf;EACA;;KAGU,sBAAsB,QAAQ,eAAe;KAC7C,uBACV,QAAQ,qBACL,QAAQ,aAAa;KACd,gBACV,QAAQ,qBACL,aAAa,eAAe,QAAQ,aAAa;KAC1C,mBACR,aACA,eACA,QAAQ,aAAa,gBACrB,qBACA,sBACA;KAEQ,SAAS,aAAa;EAChC;EACA,UAAU;IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC1DY,aACd,UAAU,kBAAkB,UAC1B,kBAAkB;iBACN,aAAa,QAAQ,SAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-DNLmSRnE.d.mts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts","../src/plugin.ts"],"mappings":""}
|