/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/clio-core@0.12.0/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
import{dirname,join,relative}from"path";import{existsSync,mkdirSync,readFileSync,statSync,writeFileSync}from"fs";import{getDestinationFromConfig,getPackageConfig,getParsedNpmDependencies,getParsedNpmDevDependencies,getSourceFromConfig}from"clio-manifest";import{bean}from"bean-parser";import{get}from"./types.js";import lex from"./lexer.js";import{parsingError}from"./errors.js";import rules from"./rules.js";export const parse=(e,i)=>bean(e,rules,!0,i);export const defaultScope={Number:{id:"Number",type:"Type"},String:{id:"String",type:"Type"},Array:{id:"Array",type:"Type"},Any:{id:"Any",type:"Type"},Function:{id:"Function",type:"Type"},Type:{id:"Type",type:"Type"},ListType:{id:"ListType",type:"Type"}};export const compile=(e,i,{debug:t=!1,...o})=>{const r={compile:compile,compileFile:compileFile,scope:{...defaultScope},source:e,...o},n=lex(e,{file:i});t&&console.dir(n.current,{depth:null});const s=parse(n,r);if(t&&console.dir(s,{depth:null}),"clio"==s.first.item.type){const t=get(s.current.item,r),{code:o,map:n}=t.toStringWithSourceMap();return n.setSourceContent(i,e),{code:o+`//# sourceMappingURL=${i}.js.map`,map:n.toString(),context:r}}throw parsingError(e,i,s)};export const mkdir=e=>{existsSync(e)||mkdirSync(e,{recursive:!0})};export const isFileModified=(e,i,t,o)=>{if(!existsSync(i))return!0;if(!existsSync(t))return!0;if(!existsSync(o))return!0;const r=statSync(e,{bigint:!0}).mtimeMs,n=statSync(i,{bigint:!0}).mtimeMs;return[statSync(t,{bigint:!0}).mtimeMs,n,statSync(o,{bigint:!0}).mtimeMs].map((e=>e<=r)).every(Boolean)};export const compileFile=(e,i,t,o,r,n,s,p,c,m)=>{const l=getDestinationFromConfig(t,i),d=getSourceFromConfig(t,i),a=p?join(n,p,l):join(n,l),f=s?join(n,s,d):join(n,d),y=join(f,e),g=`${i.title}@${i.version}`,u=`${join(a,e)}.js`,S=`${u}.map`,D=join(n,c,`${u}.json`);if(!isFileModified(y,u,S,D)){const e=readFileSync(S).toString(),i=readFileSync(u).toString(),{scope:t,imports:s=[]}=JSON.parse(readFileSync(D).toString()),p=[...s];for(;p.length;){const{src:e,dest:i,module:t}=p.pop(),l=t?join(n,o,t,"clio.toml"):join(n,"clio.toml");m.npmDeps[t]||(m.npmDeps[t]=getParsedNpmDependencies(l)),m.npmDevDeps[t]||(m.npmDevDeps[t]=getParsedNpmDevDependencies(l));const d=`${i}.map`,a=join(n,c,`${i}.json`);if(isFileModified(e,i,d,a)){m.configs[t]||(m.configs[t]=getPackageConfig(l));const f=m.configs[t],y=readFileSync(e,"utf8"),g=getDestinationFromConfig(l,f),u=getSourceFromConfig(l,f),S=join(dirname(l),u),D=relative(S,e),F=`${f.title}@${f.version}`,{code:x,map:j,context:v}=compile(y,D,{root:n,file:D,config:f,sourceDir:u,modulesDir:o,modulesDestDir:r,rpcPrefix:F,destFile:i,destination:g,configPath:l,srcPrefix:t?join(o,t,u):"src",destPrefix:t?join(r,t,g):"dest",cacheDir:c,...m});mkdir(dirname(i)),mkdir(dirname(a)),writeFileSync(a,JSON.stringify({scope:v.scope,imports:v.imports||[]}),"utf8"),writeFileSync(i,x,"utf8"),writeFileSync(d,j,"utf8"),p.push(...s)}else{const{imports:e=[]}=JSON.parse(readFileSync(a).toString());p.push(...e)}}return{npmDeps:m.npmDeps||{},npmDevDeps:m.npmDevDeps||{},code:i,map:e,scope:t,imports:s,destFile:u,srcFile:y}}const F=readFileSync(y,"utf8"),{code:x,map:j,context:v}=compile(F,e,{root:n,file:e,config:i,sourceDir:d,modulesDir:o,modulesDestDir:r,rpcPrefix:g,destFile:u,destination:l,configPath:t,srcPrefix:s,destPrefix:p,cacheDir:c,...m});return mkdir(dirname(u)),mkdir(dirname(D)),writeFileSync(D,JSON.stringify({scope:v.scope,imports:v.imports||[]}),"utf8"),writeFileSync(u,x,"utf8"),writeFileSync(S,j,"utf8"),{npmDeps:v.npmDeps||{},npmDevDeps:v.npmDevDeps||{},code:x,map:j,scope:v.scope,imports:v.imports,destFile:u,srcFile:y}};export const tokenize=lex;
//# sourceMappingURL=/sm/2f0f992a36dd30bf35e0bbe60d3c8928d78ffd7d1fd103da080716913cf3eac7.map