@mercurjs/cli 2.2.0-canary.37 → 2.2.0-canary.39
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.js +37 -37
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {Command}from'commander';import*as
|
|
2
|
+
import {Command}from'commander';import*as E from'path';import E__default,{join,basename}from'path';import _e from'prompts';import {z as z$1}from'zod';import Mt,{promises,existsSync,readFileSync,mkdirSync,writeFileSync,statSync}from'fs';import {cosmiconfig}from'cosmiconfig';import {loadConfig,createMatchPath}from'tsconfig-paths';import A from'fs-extra';import at from'fast-glob';import ls,{createHash}from'crypto';import cr from'deepmerge';import*as L from'fs/promises';import L__default,{writeFile,rm}from'fs/promises';import ps,{homedir,tmpdir}from'os';import {Project,ScriptKind}from'ts-morph';import F from'kleur';import sn from'ora';import {execa}from'execa';import {detect}from'@antfu/ni';import {diffLines}from'diff';import {spawn,execSync}from'child_process';import {Readable}from'stream';import {pipeline}from'stream/promises';import $t from'pg';import Ms from'open';import {x as x$1}from'tar';import Us from'terminal-link';import zs from'validate-npm-package-name';import Bs from'wait-on';import {builtinModules}from'module';import {generatePluginEntryModule}from'@mercurjs/dashboard-sdk';var Ne={version:"2.2.0-canary.39"};var Ut="MISSING_DIR_OR_EMPTY_PROJECT",C="MISSING_CONFIG",z="BUILD_MISSING_REGISTRY_FILE";var wo=z$1.enum(["registry:api","registry:vendor","registry:admin"]),zt=z$1.object({path:z$1.string(),content:z$1.string().optional(),type:wo,target:z$1.string().optional()}),Bt=z$1.object({$schema:z$1.string().optional(),name:z$1.string(),title:z$1.string().optional(),author:z$1.string().min(2).optional(),description:z$1.string().optional(),dependencies:z$1.array(z$1.string()).optional(),devDependencies:z$1.array(z$1.string()).optional(),registryDependencies:z$1.array(z$1.string()).optional(),meta:z$1.record(z$1.string(),z$1.any()).optional(),docs:z$1.string().optional(),categories:z$1.array(z$1.string()).optional()}),$=Bt.extend({files:z$1.array(zt)}),K=z$1.object({name:z$1.string(),homepage:z$1.string(),items:z$1.array($)}),xi=z$1.array(Bt),Wt=$.pick({dependencies:true,devDependencies:true,files:true,docs:true}),Ro=z$1.union([z$1.string(),z$1.object({url:z$1.string(),params:z$1.record(z$1.string(),z$1.string()).optional(),headers:z$1.record(z$1.string(),z$1.string()).optional()})]),Gt=z$1.record(z$1.string().refine(e=>e.startsWith("@"),{message:"Registry names must start with @ (e.g., @mercurjs)"}),Ro);var Oe="https://registry.mercurjs.com/registry.json",Vt="https://registry.mercurjs.com/registry-item.json",ye=process.env.REGISTRY_URL??"https://raw.githubusercontent.com/mercurjs/mercur/main/packages/registry/r",P={"@mercurjs":`${ye}/{name}.json`};var j={NOT_FOUND:"NOT_FOUND",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",FETCH_ERROR:"FETCH_ERROR",NOT_CONFIGURED:"NOT_CONFIGURED",INVALID_CONFIG:"INVALID_CONFIG",MISSING_ENV_VARS:"MISSING_ENV_VARS",LOCAL_FILE_ERROR:"LOCAL_FILE_ERROR",PARSE_ERROR:"PARSE_ERROR",VALIDATION_ERROR:"VALIDATION_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},x=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||j.UNKNOWN_ERROR,this.statusCode=r.statusCode,this.cause=r.cause,this.context=r.context,this.suggestion=r.suggestion,this.timestamp=new Date,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}},ae=class extends x{constructor(r,o){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:j.NOT_FOUND,statusCode:404,cause:o,context:{url:r},suggestion:"Check if the item name is correct and the registry URL is accessible."});this.url=r;this.name="RegistryNotFoundError";}url},Ae=class extends x{constructor(r,o){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:j.UNAUTHORIZED,statusCode:401,cause:o,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}url},Me=class extends x{constructor(r,o){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:j.FORBIDDEN,statusCode:403,cause:o,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}url},Le=class extends x{constructor(r,o,n,s){let i=o?`Failed to fetch from registry (${o}): ${r}`:`Failed to fetch from registry: ${r}`,p=typeof s=="string"&&s?`${i} - ${s}`:i,l="Check your network connection and try again.";o===404?l="The requested resource was not found. Check the URL or item name.":o===500?l="The registry server encountered an error. Try again later.":o&&o>=400&&o<500&&(l="There was a client error. Check your request parameters.");super(p,{code:j.FETCH_ERROR,statusCode:o,cause:s,context:{url:r,responseBody:n},suggestion:l});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}url;responseBody},Z=class extends x{constructor(r){let o=r?`Unknown registry "${r}". Make sure it is defined in agents.json as follows:
|
|
3
3
|
{
|
|
4
4
|
"registries": {
|
|
5
5
|
"${r}": "[URL_TO_REGISTRY]"
|
|
6
6
|
}
|
|
7
|
-
}`:'Unknown registry. Make sure it is defined in blocks.json under "registries".';super(o,{code
|
|
7
|
+
}`:'Unknown registry. Make sure it is defined in blocks.json under "registries".';super(o,{code:j.NOT_CONFIGURED,context:{registryName:r},suggestion:"Add the registry configuration to your blocks.json file. Consult the registry documentation for the correct format."});this.registryName=r;this.name="RegistryNotConfiguredError";}registryName},Q=class extends x{constructor(r,o){super(`Failed to read local registry file: ${r}`,{code:j.LOCAL_FILE_ERROR,cause:o,context:{filePath:r},suggestion:"Check if the file exists and you have read permissions."});this.filePath=r;this.name="RegistryLocalFileError";}filePath},T=class extends x{constructor(r,o){let n=`Failed to parse registry item: ${r}`;o instanceof z$1.ZodError&&(n=`Failed to parse registry item: ${r}
|
|
8
8
|
${o.issues.map(s=>` - ${s.path.join(".")}: ${s.message}`).join(`
|
|
9
|
-
`)}`);super(
|
|
9
|
+
`)}`);super(n,{code:j.PARSE_ERROR,cause:o,context:{item:r},suggestion:"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object."});this.item=r;this.parseError=o,this.name="RegistryParseError";}item;parseError},Ue=class extends x{constructor(r,o){let n=`Registry "${r}" requires the following environment variables:
|
|
10
10
|
|
|
11
11
|
`+o.map(s=>` \u2022 ${s}`).join(`
|
|
12
|
-
`);super(
|
|
12
|
+
`);super(n,{code:j.MISSING_ENV_VARS,context:{registryName:r,missingVars:o},suggestion:"Set the required environment variables to your .env or .env.local file."});this.registryName=r;this.missingVars=o;this.name="RegistryMissingEnvironmentVariablesError";}registryName;missingVars},ze=class extends x{constructor(r){let o=`Invalid registry namespace: "${r}". Registry names must start with @ (e.g., @mercurjs).`;super(o,{code:j.VALIDATION_ERROR,context:{name:r},suggestion:"Use a valid registry name starting with @ or provide a direct URL to the registry."});this.name=r;this.name="RegistryInvalidNamespaceError";}name};var Be=class extends x{constructor(r,o){let n=`Invalid blocks.json configuration in ${r}.`;o instanceof z$1.ZodError&&(n=`Invalid blocks.json configuration in ${r}:
|
|
13
13
|
${o.issues.map(s=>` - ${s.path.join(".")}: ${s.message}`).join(`
|
|
14
|
-
`)}`);super(i,{code:$.INVALID_CONFIG,cause:o,context:{cwd:r},suggestion:"Check your blocks.json file for syntax errors or invalid configuration. Run '@mercurjs/cli init' to regenerate a valid configuration."});this.cwd=r;this.name="ConfigParseError";}cwd};var B=z$1.object({$schema:z$1.string().optional(),aliases:z$1.object({api:z$1.string(),vendor:z$1.string(),admin:z$1.string()}),registries:Wt.optional()}).strict(),Yt=B.extend({resolvedPaths:z$1.object({cwd:z$1.string(),api:z$1.string(),vendor:z$1.string(),admin:z$1.string()})});async function de(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx"])}var xo="packages/api/src",_o="apps/vendor/src",ko="apps/admin/src",Eo=cosmiconfig("blocks",{searchPlaces:["blocks.json"]});async function b(e){let t=await So(e);return t?await st(e,t):null}async function st(e,t){t.registries={...t.registries||{},...I};let r=await loadConfig(e);if(r.resultType==="failed")throw new Error(`Failed to load tsconfig.json. ${r.message??""}`.trim());return Yt.parse({...t,resolvedPaths:{cwd:e,api:await de(t.aliases.api,r),vendor:await de(t.aliases.vendor,r),admin:await de(t.aliases.admin,r)}})}async function So(e){try{let t=await Eo.search(e);if(!t)return null;let r=B.parse(t.config);if(r.registries){for(let o of Object.keys(r.registries))if(o in I)throw new Error(`"${o}" is a built-in registry and cannot be overridden.`)}return r}catch(t){throw t instanceof Error&&t.message.includes("reserved registry")?t:new Be(e,t)}}function W(e){let t={resolvedPaths:{cwd:process.cwd(),api:"",vendor:"",admin:""},aliases:{api:xo,vendor:_o,admin:ko},registries:{...I}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},aliases:{...t.aliases,...e.aliases||{}},registries:{...t.registries,...e.registries||{}}}:t}var at=["**/node_modules/**","public","dist"];async function k(e){let[t,r,o,i,s,n]=await Promise.all([A.pathExists(R__default.resolve(e,"src")),Co(e),ve(e),Po(e),To(e),$o(e)]);return {isSrcDir:t,aliasPrefix:r,packageJson:o,medusaConfigFile:i?.file??null,medusaVersion:s,mercurVersion:n}}async function Co(e){let t=loadConfig(e);if(t.resultType==="failed")return null;let r=t.paths||{},o=Object.keys(r);if(o.length===0)return null;let i=o[0];return i?.includes("*")?i.replace("/*",""):i?.replace("/","")??null}function ve(e="",t=true){let r=R__default.join(e,"package.json");return A.readJSONSync(r,{throws:t})}async function Po(e){let t=await nt.glob("medusa-config.*",{cwd:e,deep:3,ignore:at});if(!t.length)return null;let r=t[0];return {file:r,dir:R__default.resolve(e,R__default.dirname(r))}}async function To(e){let r=ve(e,false)?.dependencies?.["@medusajs/framework"];if(r)return r;let o=await nt.glob("**/package.json",{cwd:e,deep:3,ignore:at});for(let i of o){let n=ve(R__default.join(e,R__default.dirname(i)),false)?.dependencies?.["@medusajs/framework"];if(n)return n}return null}async function $o(e){let r=ve(e,false)?.dependencies?.["@mercurjs/cli"];if(r)return r;let o=await nt.glob("**/package.json",{cwd:e,deep:3,ignore:at});for(let i of o){let n=ve(R__default.join(e,R__default.dirname(i)),false)?.dependencies?.["@mercurjs/cli"];if(n)return n}return null}z$1.object({cwd:z$1.string(),blocks:z$1.array(z$1.string()).optional(),yes:z$1.boolean(),overwrite:z$1.boolean(),silent:z$1.boolean()});async function Jt(e){let t={},r=R__default.resolve(e.cwd);if(!existsSync(r))return t[Lt]=true,{errors:t,config:null};let o=await b(r);if(!o)return t[S]=true,{errors:t,config:null};let i=await k(r);return {errors:t,config:o,projectInfo:i}}var We={headers:{}};function dt(e){We.headers={...We.headers,...e};}function Ht(e){return We.headers[e]||{}}function x(){We.headers={};}function me(e){let t={aliases:{api:"packages/api/src",vendor:"apps/vendor/src",admin:"apps/admin/src"},registries:I};return {...t,...e||{},aliases:{...t.aliases,...e?.aliases||{}},registries:{...e?.registries||{},...I}}}function we(e){return e.replace(/\${(\w+)}/g,(t,r)=>process.env[r]||"")}function je(e){let t=[],r=/\${(\w+)}/g,o=r.exec(e);for(;o!==null;){let i=o[1];i&&t.push(i),o=r.exec(e);}return t}var Fo=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function pe(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(Fo);return t?{registry:t[1],item:t[2]}:{registry:null,item:e}}var Kt=[".tsx",".ts"],Zt=["lib/utils.ts"],Uo=[/^(react|react-dom)(\/.*)?$/,/^(node|jsr|npm):.*$/],zo=new Project({compilerOptions:{}});function Bo(e){if(Uo.some(t=>t.test(e)))return null;if(!e.startsWith("@")&&e.includes("/")&&(e=e.split("/")[0]),e.startsWith("@")){let t=e.split("/");t.length>2&&(e=t.slice(0,2).join("/"));}return e}async function mt(e,t,r,o=new Set){let i=R.resolve(t.resolvedPaths.cwd,e),s=R.relative(t.resolvedPaths.cwd,i);if(Zt.includes(s))return {dependencies:[],files:[]};let n=R.extname(e);if(!Kt.includes(n))return {dependencies:[],files:[]};if(o.has(s))return {dependencies:[],files:[]};o.add(s);try{if(!(await L.stat(i)).isFile())return {dependencies:[],files:[]}}catch{return {dependencies:[],files:[]}}let m=await L.readFile(i,"utf-8"),p=await Wo(R.basename(i)),d=zo.createSourceFile(p,m,{scriptKind:ScriptKind.TSX}),u=await loadConfig(t.resolvedPaths.cwd);if(u.resultType==="failed")return {dependencies:[],files:[]};let c=[],f=new Set,y=Qt(e),h={path:s,type:y,target:"",content:""};c.push(h);let w=d.getImportDeclarations();for(let F of w){let U=F.getModuleSpecifierValue(),$e=U.startsWith(".");if(!(r.aliasPrefix&&U.startsWith(`${r.aliasPrefix}/`))&&!$e){let O=Bo(U);O&&f.add(O);continue}let se=await de(U,u);if($e&&(se=R.resolve(R.dirname(i),U)),!se)continue;if(!R.extname(se))for(let O of Kt){let Mt=`${se}${O}`;try{await L.access(Mt),se=Mt;break}catch{continue}}let De=R.relative(t.resolvedPaths.cwd,se);if(o.has(De)||Zt.includes(De))continue;let go=Qt(U),yo={path:De,type:go,target:"",content:""};c.push(yo);let Ne=await mt(De,t,r,o);if(Ne.files)for(let O of Ne.files)o.has(O.path)||(o.add(O.path),c.push(O));Ne.dependencies&&Ne.dependencies.forEach(O=>f.add(O));}let E=Array.from(new Map(c.map(F=>[F.path,F])).values());return {dependencies:Array.from(f),files:E}}async function Wo(e){let t=await L.mkdtemp(R.join(tmpdir(),"mercur-"));return R.join(t,e)}function Qt(e){return e.includes("/vendor")?"registry:vendor":e.includes("/admin")?"registry:admin":"registry:api"}function Y(e){try{return new URL(e),!0}catch{return false}}function ee(e){return e.endsWith(".json")&&!Y(e)}function Go(e){let t=new Set;if(typeof e=="string")for(let r of je(e))t.add(r);else {for(let r of je(e.url))t.add(r);if(e.params)for(let r of Object.values(e.params))for(let o of je(r))t.add(o);if(e.headers)for(let r of Object.values(e.headers))for(let o of je(r))t.add(o);}return Array.from(t)}function Xt(e,t){let o=Go(t).filter(i=>!process.env[i]);if(o.length>0)throw new Ue(e,o)}var Ge="{name}",Vo=`${Ge}.json`,er=/\${(\w+)}/g,tr="?",Yo="&";function qo(e){return e.includes(Ge)}function rr(e){return qo(e)?e:`${e.endsWith("/")?e:`${e}/`}${Vo}`}function be(e,t){let{registry:r,item:o}=pe(e);if(!r)return null;let s=(t?.registries||{})[r];if(!s)throw new Z(r);return Xt(r,s),{url:Jo(o,s),headers:Ho(s)}}function Jo(e,t,r){if(typeof t=="string"){let n=rr(t).replace(Ge,e);return we(n)}let i=rr(t.url).replace(Ge,e);return i=we(i),t.params?Ko(i,t.params):i}function Ho(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,o]of Object.entries(e.headers)){let i=we(o);Zo(o,i)&&(t[r]=i);}return t}function Ko(e,t){let r=new URLSearchParams;for(let[s,n]of Object.entries(t)){let m=we(n);m&&r.append(s,m);}let o=r.toString();if(!o)return e;let i=e.includes(tr)?Yo:tr;return `${e}${i}${o}`}function Zo(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(er)){let i=e.replace(er,"").trim();return r!==i}return true}function or(e){return Y(e)||ee(e)?e:`${he}/${e}`}var Ve=new Map;async function Qo(e){let t=e;t.startsWith("file://")&&(t=t.slice(7)),t.startsWith("~/")&&(t=R__default.join(homedir(),t.slice(2)));let r=R__default.resolve(t);try{let o=await promises.readFile(r,"utf8");return JSON.parse(o)}catch(o){throw o instanceof Error&&(o.message.includes("ENOENT")||o.message.includes("no such file"))?new Q(e,o):new Q(e,o)}}async function te(e){return await Promise.all(e.map(async r=>{let o=or(r);if(Ve.has(o))return Ve.get(o);if(ee(o)){let s=Qo(o);return Ve.set(o,s),s}let i=(async()=>{let s=Ht(o),n=await fetch(o,{headers:{...s}});if(!n.ok){let m;if(n.headers.get("content-type")?.includes("application/json")){let p=await n.json(),d=z$1.object({detail:z$1.string().optional(),title:z$1.string().optional(),message:z$1.string().optional(),error:z$1.string().optional()}).safeParse(p);d.success&&(m=d.data.detail||d.data.message,d.data.error&&(m=`[${d.data.error}] ${m}`));}throw n.status===401?new Ae(o,m):n.status===404?new ae(o,m):n.status===403?new Me(o,m):new Le(o,n.status,m)}return n.json()})();return Ve.set(o,i),i}))}async function nr(e){try{let t=e;e.startsWith("~/")&&(t=R__default.join(homedir(),e.slice(2)));let r=R__default.resolve(t),o=await promises.readFile(r,"utf8"),i=JSON.parse(o);try{return T.parse(i)}catch(s){throw new C(e,s)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new Q(e,t):t instanceof C?t:new Q(e,t)}}T.extend({_source:z$1.string().optional()});function pt(e,t){let r={},o=[...e];if(!t?.registries)return dt({}),o;for(let i=0;i<o.length;i++){let s=be(o[i],t);s&&(o[i]=s.url,Object.keys(s.headers).length>0&&(r[s.url]=s.headers));}return dt(r),o}async function qe(e,t){return await Promise.all(e.map(async o=>{if(ee(o))return nr(o);if(Y(o)){let[n]=await te([o]);try{return T.parse(n)}catch(m){throw new C(o,m)}}if(o.startsWith("@")&&t?.registries){let n=pt([o],t),[m]=await te(n);try{return T.parse(m)}catch(p){throw new C(o,p)}}let i=`${he}/${o}.json`,[s]=await te([i]);try{return T.parse(s)}catch(n){throw new C(o,n)}}))}async function ct(e,t){let r=[],o=[],i=Array.from(new Set(e)),s=await qe(i,t),n=new Map;for(let d=0;d<s.length;d++)s[d]&&n.set(i[d],s[d]);for(let[d,u]of Array.from(n.entries())){let c={...u,_source:d};if(r.push(c),u.registryDependencies){let f=u.registryDependencies;if(t?.registries)f=pt(u.registryDependencies,t);else {let h=u.registryDependencies.filter(w=>w.startsWith("@"));if(h.length>0){let{registry:w}=pe(h[0]);throw new Z(w)}}let{blocks:y}=await mr(f,t,new Set(i));o.push(...y);}}r.push(...o);let m=new Map;for(let d of r){let u=d._source||d.name;m.set(d,u);}return r=ri(r,m),Bt.parse({dependencies:ar.all(r.map(d=>d.dependencies??[])),devDependencies:ar.all(r.map(d=>d.devDependencies??[])),files:oi(r.map(d=>d.files??[])),docs:r.map(d=>d.docs).filter(Boolean).join(`
|
|
15
|
-
`)})}async function
|
|
14
|
+
`)}`);super(n,{code:j.INVALID_CONFIG,cause:o,context:{cwd:r},suggestion:"Check your blocks.json file for syntax errors or invalid configuration. Run '@mercurjs/cli init' to regenerate a valid configuration."});this.cwd=r;this.name="ConfigParseError";}cwd};var B=z$1.object({$schema:z$1.string().optional(),aliases:z$1.object({api:z$1.string(),vendor:z$1.string(),admin:z$1.string()}),registries:Gt.optional()}).strict(),Jt=B.extend({resolvedPaths:z$1.object({cwd:z$1.string(),api:z$1.string(),vendor:z$1.string(),admin:z$1.string()})});async function ce(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx"])}var So="packages/api/src",xo="apps/vendor/src",ko="apps/admin/src",Io=cosmiconfig("blocks",{searchPlaces:["blocks.json"]});async function v(e){let t=await Co(e);return t?await it(e,t):null}async function it(e,t){t.registries={...t.registries||{},...P};let r=await loadConfig(e);if(r.resultType==="failed")throw new Error(`Failed to load tsconfig.json. ${r.message??""}`.trim());return Jt.parse({...t,resolvedPaths:{cwd:e,api:await ce(t.aliases.api,r),vendor:await ce(t.aliases.vendor,r),admin:await ce(t.aliases.admin,r)}})}async function Co(e){try{let t=await Io.search(e);if(!t)return null;let r=B.parse(t.config);if(r.registries){for(let o of Object.keys(r.registries))if(o in P)throw new Error(`"${o}" is a built-in registry and cannot be overridden.`)}return r}catch(t){throw t instanceof Error&&t.message.includes("reserved registry")?t:new Be(e,t)}}function W(e){let t={resolvedPaths:{cwd:process.cwd(),api:"",vendor:"",admin:""},aliases:{api:So,vendor:xo,admin:ko},registries:{...P}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},aliases:{...t.aliases,...e.aliases||{}},registries:{...t.registries,...e.registries||{}}}:t}var ct=["**/node_modules/**","public","dist"];async function k(e){let[t,r,o,n,s,i]=await Promise.all([A.pathExists(E__default.resolve(e,"src")),To(e),we(e),_o(e),$o(e),jo(e)]);return {isSrcDir:t,aliasPrefix:r,packageJson:o,medusaConfigFile:n?.file??null,medusaVersion:s,mercurVersion:i}}async function To(e){let t=loadConfig(e);if(t.resultType==="failed")return null;let r=t.paths||{},o=Object.keys(r);if(o.length===0)return null;let n=o[0];return n?.includes("*")?n.replace("/*",""):n?.replace("/","")??null}function we(e="",t=true){let r=E__default.join(e,"package.json");return A.readJSONSync(r,{throws:t})}async function _o(e){let t=await at.glob("medusa-config.*",{cwd:e,deep:3,ignore:ct});if(!t.length)return null;let r=t[0];return {file:r,dir:E__default.resolve(e,E__default.dirname(r))}}async function $o(e){let r=we(e,false)?.dependencies?.["@medusajs/framework"];if(r)return r;let o=await at.glob("**/package.json",{cwd:e,deep:3,ignore:ct});for(let n of o){let i=we(E__default.join(e,E__default.dirname(n)),false)?.dependencies?.["@medusajs/framework"];if(i)return i}return null}async function jo(e){let r=we(e,false)?.dependencies?.["@mercurjs/cli"];if(r)return r;let o=await at.glob("**/package.json",{cwd:e,deep:3,ignore:ct});for(let n of o){let i=we(E__default.join(e,E__default.dirname(n)),false)?.dependencies?.["@mercurjs/cli"];if(i)return i}return null}z$1.object({cwd:z$1.string(),blocks:z$1.array(z$1.string()).optional(),yes:z$1.boolean(),overwrite:z$1.boolean(),silent:z$1.boolean()});async function qt(e){let t={},r=E__default.resolve(e.cwd);if(!existsSync(r))return t[Ut]=true,{errors:t,config:null};let o=await v(r);if(!o)return t[C]=true,{errors:t,config:null};let n=await k(r);return {errors:t,config:o,projectInfo:n}}var We={headers:{}};function lt(e){We.headers={...We.headers,...e};}function Kt(e){return We.headers[e]||{}}function S(){We.headers={};}function le(e){let t={aliases:{api:"packages/api/src",vendor:"apps/vendor/src",admin:"apps/admin/src"},registries:P};return {...t,...e||{},aliases:{...t.aliases,...e?.aliases||{}},registries:{...e?.registries||{},...P}}}function Re(e){return e.replace(/\${(\w+)}/g,(t,r)=>process.env[r]||"")}function be(e){let t=[],r=/\${(\w+)}/g,o=r.exec(e);for(;o!==null;){let n=o[1];n&&t.push(n),o=r.exec(e);}return t}var No=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function pe(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(No);return t?{registry:t[1],item:t[2]}:{registry:null,item:e}}var Zt=[".tsx",".ts"],Qt=["lib/utils.ts"],Uo=[/^(react|react-dom)(\/.*)?$/,/^(node|jsr|npm):.*$/],zo=new Project({compilerOptions:{}});function Bo(e){if(Uo.some(t=>t.test(e)))return null;if(!e.startsWith("@")&&e.includes("/")&&(e=e.split("/")[0]),e.startsWith("@")){let t=e.split("/");t.length>2&&(e=t.slice(0,2).join("/"));}return e}async function pt(e,t,r,o=new Set){let n=E.resolve(t.resolvedPaths.cwd,e),s=E.relative(t.resolvedPaths.cwd,n);if(Qt.includes(s))return {dependencies:[],files:[]};let i=E.extname(e);if(!Zt.includes(i))return {dependencies:[],files:[]};if(o.has(s))return {dependencies:[],files:[]};o.add(s);try{if(!(await L.stat(n)).isFile())return {dependencies:[],files:[]}}catch{return {dependencies:[],files:[]}}let p=await L.readFile(n,"utf-8"),l=await Wo(E.basename(n)),c=zo.createSourceFile(l,p,{scriptKind:ScriptKind.TSX}),f=await loadConfig(t.resolvedPaths.cwd);if(f.resultType==="failed")return {dependencies:[],files:[]};let m=[],d=new Set,h=Xt(e),y={path:s,type:h,target:"",content:""};m.push(y);let R=c.getImportDeclarations();for(let N of R){let U=N.getModuleSpecifierValue(),je=U.startsWith(".");if(!(r.aliasPrefix&&U.startsWith(`${r.aliasPrefix}/`))&&!je){let O=Bo(U);O&&d.add(O);continue}let se=await ce(U,f);if(je&&(se=E.resolve(E.dirname(n),U)),!se)continue;if(!E.extname(se))for(let O of Zt){let Lt=`${se}${O}`;try{await L.access(Lt),se=Lt;break}catch{continue}}let De=E.relative(t.resolvedPaths.cwd,se);if(o.has(De)||Qt.includes(De))continue;let go=Xt(U),ho={path:De,type:go,target:"",content:""};m.push(ho);let Fe=await pt(De,t,r,o);if(Fe.files)for(let O of Fe.files)o.has(O.path)||(o.add(O.path),m.push(O));Fe.dependencies&&Fe.dependencies.forEach(O=>d.add(O));}let I=Array.from(new Map(m.map(N=>[N.path,N])).values());return {dependencies:Array.from(d),files:I}}async function Wo(e){let t=await L.mkdtemp(E.join(tmpdir(),"mercur-"));return E.join(t,e)}function Xt(e){return e.includes("/vendor")?"registry:vendor":e.includes("/admin")?"registry:admin":"registry:api"}function Y(e){try{return new URL(e),!0}catch{return false}}function ee(e){return e.endsWith(".json")&&!Y(e)}function Go(e){let t=new Set;if(typeof e=="string")for(let r of be(e))t.add(r);else {for(let r of be(e.url))t.add(r);if(e.params)for(let r of Object.values(e.params))for(let o of be(r))t.add(o);if(e.headers)for(let r of Object.values(e.headers))for(let o of be(r))t.add(o);}return Array.from(t)}function er(e,t){let o=Go(t).filter(n=>!process.env[n]);if(o.length>0)throw new Ue(e,o)}var Ge="{name}",Vo=`${Ge}.json`,tr=/\${(\w+)}/g,rr="?",Yo="&";function Jo(e){return e.includes(Ge)}function or(e){return Jo(e)?e:`${e.endsWith("/")?e:`${e}/`}${Vo}`}function ve(e,t){let{registry:r,item:o}=pe(e);if(!r)return null;let s=(t?.registries||{})[r];if(!s)throw new Z(r);return er(r,s),{url:Ho(o,s),headers:qo(s)}}function Ho(e,t,r){if(typeof t=="string"){let i=or(t).replace(Ge,e);return Re(i)}let n=or(t.url).replace(Ge,e);return n=Re(n),t.params?Ko(n,t.params):n}function qo(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,o]of Object.entries(e.headers)){let n=Re(o);Zo(o,n)&&(t[r]=n);}return t}function Ko(e,t){let r=new URLSearchParams;for(let[s,i]of Object.entries(t)){let p=Re(i);p&&r.append(s,p);}let o=r.toString();if(!o)return e;let n=e.includes(rr)?Yo:rr;return `${e}${n}${o}`}function Zo(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(tr)){let n=e.replace(tr,"").trim();return r!==n}return true}function nr(e){return Y(e)||ee(e)?e:`${ye}/${e}`}var Ve=new Map;async function Qo(e){let t=e;t.startsWith("file://")&&(t=t.slice(7)),t.startsWith("~/")&&(t=E__default.join(homedir(),t.slice(2)));let r=E__default.resolve(t);try{let o=await promises.readFile(r,"utf8");return JSON.parse(o)}catch(o){throw o instanceof Error&&(o.message.includes("ENOENT")||o.message.includes("no such file"))?new Q(e,o):new Q(e,o)}}async function te(e){return await Promise.all(e.map(async r=>{let o=nr(r);if(Ve.has(o))return Ve.get(o);if(ee(o)){let s=Qo(o);return Ve.set(o,s),s}let n=(async()=>{let s=Kt(o),i=await fetch(o,{headers:{...s}});if(!i.ok){let p;if(i.headers.get("content-type")?.includes("application/json")){let l=await i.json(),c=z$1.object({detail:z$1.string().optional(),title:z$1.string().optional(),message:z$1.string().optional(),error:z$1.string().optional()}).safeParse(l);c.success&&(p=c.data.detail||c.data.message,c.data.error&&(p=`[${c.data.error}] ${p}`));}throw i.status===401?new Ae(o,p):i.status===404?new ae(o,p):i.status===403?new Me(o,p):new Le(o,i.status,p)}return i.json()})();return Ve.set(o,n),n}))}async function ar(e){try{let t=e;e.startsWith("~/")&&(t=E__default.join(homedir(),e.slice(2)));let r=E__default.resolve(t),o=await promises.readFile(r,"utf8"),n=JSON.parse(o);try{return $.parse(n)}catch(s){throw new T(e,s)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new Q(e,t):t instanceof T?t:new Q(e,t)}}$.extend({_source:z$1.string().optional()});function mt(e,t){let r={},o=[...e];if(!t?.registries)return lt({}),o;for(let n=0;n<o.length;n++){let s=ve(o[n],t);s&&(o[n]=s.url,Object.keys(s.headers).length>0&&(r[s.url]=s.headers));}return lt(r),o}async function Je(e,t){return await Promise.all(e.map(async o=>{if(ee(o))return ar(o);if(Y(o)){let[i]=await te([o]);try{return $.parse(i)}catch(p){throw new T(o,p)}}if(o.startsWith("@")&&t?.registries){let i=mt([o],t),[p]=await te(i);try{return $.parse(p)}catch(l){throw new T(o,l)}}let n=`${ye}/${o}.json`,[s]=await te([n]);try{return $.parse(s)}catch(i){throw new T(o,i)}}))}async function ft(e,t){let r=[],o=[],n=Array.from(new Set(e)),s=await Je(n,t),i=new Map;for(let c=0;c<s.length;c++)s[c]&&i.set(n[c],s[c]);for(let[c,f]of Array.from(i.entries())){let m={...f,_source:c};if(r.push(m),f.registryDependencies){let d=f.registryDependencies;if(t?.registries)d=mt(f.registryDependencies,t);else {let y=f.registryDependencies.filter(R=>R.startsWith("@"));if(y.length>0){let{registry:R}=pe(y[0]);throw new Z(R)}}let{blocks:h}=await pr(d,t,new Set(n));o.push(...h);}}r.push(...o);let p=new Map;for(let c of r){let f=c._source||c.name;p.set(c,f);}return r=rn(r,p),Wt.parse({dependencies:cr.all(r.map(c=>c.dependencies??[])),devDependencies:cr.all(r.map(c=>c.devDependencies??[])),files:on(r.map(c=>c.files??[])),docs:r.map(c=>c.docs).filter(Boolean).join(`
|
|
15
|
+
`)})}async function pr(e,t,r=new Set){let o=[];for(let n of e){if(r.has(n))continue;if(r.add(n),n.startsWith("@")&&t?.registries){let{registry:i}=pe(n);if(i&&!(i in t.registries))throw new Z(i)}let[s]=await Je([n],t);if(s&&(o.push({...s,_source:n}),s.registryDependencies)){let i=t?.registries?mt(s.registryDependencies,t):s.registryDependencies,p=await pr(i,t,r);o.push(...p.blocks);}}return {blocks:o}}function J(e,t){let r=t||e.name,o=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${o}`}function tn(e){if(Y(e)){let o=new URL(e).pathname,n=o.match(/\/([^/]+)\.json$/),s=n?n[1]:E__default.basename(o,".json");return {name:s,hash:J({name:s},e)}}if(ee(e)){let r=e.match(/\/([^/]+)\.json$/),o=r?r[1]:E__default.basename(e,".json");return {name:o,hash:J({name:o},e)}}let{item:t}=pe(e);return {name:t,hash:J({name:t},e)}}function rn(e,t){let r=new Map,o=new Map,n=new Map,s=new Map;for(let c of e){let f=t.get(c)||c.name,m=J(c,f);r.set(m,c),o.set(m,c),n.set(m,0),s.set(m,[]);}let i=new Map;for(let c of e){let f=t.get(c)||c.name,m=J(c,f);i.has(c.name)||i.set(c.name,[]),i.get(c.name).push(m),f!==c.name&&(i.has(f)||i.set(f,[]),i.get(f).push(m));}for(let c of e){let f=t.get(c)||c.name,m=J(c,f);if(c.registryDependencies)for(let d of c.registryDependencies){let h,y=i.get(d)||[];if(y.length===1)h=y[0];else if(y.length>1)h=y[0];else {let{name:R}=tn(d),I=i.get(R)||[];I.length>0&&(h=I[0]);}h&&r.has(h)&&(s.get(h).push(m),n.set(m,n.get(m)+1));}}let p=[],l=[];for(let[c,f]of n)f===0&&p.push(c);for(;p.length>0;){let c=p.shift(),f=r.get(c);l.push(f);for(let m of s.get(c)){let d=n.get(m)-1;n.set(m,d),d===0&&p.push(m);}}if(l.length!==e.length){let c=Array.from(r.keys()).filter(f=>!l.some(m=>J(m,t.get(m))===f));console.warn(`Warning: Circular dependencies detected. Some items may not be sorted correctly: ${c.join(", ")}`);for(let[f,m]of r.entries())l.some(d=>J(d,t.get(d))===f)||l.push(m);}return l}function on(e){let t=new Map,r=[];for(let o of e)if(o)for(let n of o){let s=n.target||n.path;t.has(s)||(t.set(s,n),r.push(n));}return r}var u={error:e=>F.red(e),warn:e=>F.yellow(e),info:e=>F.blue(e),success:e=>F.green(e),dim:e=>F.cyan(e)};var a={error(...e){console.log(u.error(e.join(" ")));},warn(...e){console.log(u.warn(e.join(" ")));},info(...e){console.log(u.info(e.join(" ")));},success(...e){console.log(u.success(e.join(" ")));},log(...e){console.log(e.join(" "));},break(){console.log("");}};function b(e){if(a.break(),a.error("Something went wrong. Please check the error below for more details."),a.error("If the problem persists, please open an issue on GitHub."),a.error(""),typeof e=="string"&&(a.error(e),a.break(),process.exit(1)),e instanceof x&&(e.message&&(a.error(e.cause?"Error:":"Message:"),a.error(e.message)),e.cause&&(a.error(`
|
|
16
16
|
Message:`),a.error(e.cause)),e.suggestion&&(a.error(`
|
|
17
|
-
Suggestion:`),a.error(e.suggestion)),a.break(),process.exit(1)),e instanceof z$1.ZodError){a.error("Validation failed:");for(let t of e.issues){let r=t.path.join(".")||"root";a.error(`- ${
|
|
17
|
+
Suggestion:`),a.error(e.suggestion)),a.break(),process.exit(1)),e instanceof z$1.ZodError){a.error("Validation failed:");for(let t of e.issues){let r=t.path.join(".")||"root";a.error(`- ${u.info(r)}: ${t.message}`);}a.break(),process.exit(1);}e instanceof Error&&(a.error(e.message),a.break(),process.exit(1)),a.break(),process.exit(1);}function w(e,t){return sn({text:e,isSilent:t?.silent??false})}var ln=["bun","yarn","pnpm","deno","npm"];function mr(e){if(e)return ln.find(t=>e.startsWith(t))}function fr(){return mr(process.env.npm_config_user_agent)}async function ut(e){try{return await execa(e,["--version"]),!0}catch{return false}}async function H(e){let t=mr(await detect({programmatic:true,cwd:e}));if(t&&await ut(t))return t;let r=fr();return r&&await ut(r)?r:"npm"}async function ur(){let e=fr();return e&&await ut(e)?e:"npm"}async function dr(e,t,r,o={}){if(e=Array.from(new Set(e||[])),t=Array.from(new Set(t||[])),!e?.length&&!t?.length)return;o={silent:false,...o};let n=w("Installing dependencies.",{silent:o.silent})?.start(),s=await H(r.resolvedPaths.cwd);n?.start(),await pn(s,e,t,r.resolvedPaths.cwd),n?.succeed();}async function pn(e,t,r,o){if(e==="npm")return mn(t,r,o);if(e==="deno")return fn(t,r,o);t?.length&&await execa(e,["add",...t],{cwd:o}),r?.length&&await execa(e,["add","-D",...r],{cwd:o});}async function mn(e,t,r){e.length&&await execa("npm",["install",...e],{cwd:r}),t.length&&await execa("npm",["install","-D",...t],{cwd:r});}async function fn(e,t,r){e?.length&&await execa("deno",["add",...e.map(o=>`npm:${o}`)],{cwd:r}),t?.length&&await execa("deno",["add","-D",...t.map(o=>`npm:${o}`)],{cwd:r});}function gr(e,t,r={}){let{ignoreImports:o=false}=r,n=e.replace(/\r\n/g,`
|
|
18
18
|
`).trim(),s=t.replace(/\r\n/g,`
|
|
19
|
-
`).trim();if(
|
|
20
|
-
File: ${
|
|
21
|
-
`);
|
|
22
|
-
`);
|
|
23
|
-
`);
|
|
24
|
-
`):r.startsWith("- ")?process.stdout.write(`${
|
|
25
|
-
`):r.includes("lines hidden")?process.stdout.write(`${
|
|
19
|
+
`).trim();if(n===s)return true;if(!o)return false;let i=/^(import\s+(?:type\s+)?(?:\*\s+as\s+\w+|\{[^}]*\}|\w+)?(?:\s*,\s*(?:\{[^}]*\}|\w+))?\s+from\s+["'])([^"']+)(["'])/gm,p=f=>f.replace(i,(m,d,h,y)=>{if(h.startsWith("."))return `${d}${h}${y}`;let R=h.split("/"),I=R[R.length-1];return `${d}@normalized/${I}${y}`}),l=p(n),c=p(s);return l===c}function un(e,t){if(e.type==="registry:api")return t.resolvedPaths.api;if(e.type==="registry:vendor")return t.resolvedPaths.vendor;if(e.type==="registry:admin")return t.resolvedPaths.admin;throw new Error(`Unknown file type: ${e.type}`)}function He(e,t,r){let o=un(e,t);if(e.type==="registry:api"){let i=e.path.replace(/^\/|\/$/g,"").split("/").slice(1).join("/");return E__default.join(o,i)}let n=dn(e.path,o);return E__default.join(o,n)}function dn(e,t){let r=e.replace(/^\/|\/$/g,""),o=t.replace(/^\/|\/$/g,""),n=r.split("/"),s=o.split("/");for(let i=s.length-1;i>=0;i--){let p=n.findIndex(l=>l===s[i]);if(p!==-1)return n.slice(p+1).join("/")}return n[n.length-1]}var wn=new Project({compilerOptions:{}});async function Rn(e){let t=await promises.mkdtemp(E__default.join(tmpdir(),"mercurjs-")),r=E__default.basename(e,E__default.extname(e));return E__default.join(t,`${r}.ts`)}function bn(e){switch(E__default.extname(e).toLowerCase()){case ".tsx":case ".ts":return ScriptKind.TS;default:return ScriptKind.Unknown}}async function qe(e){let t=E__default.extname(e.filename).toLowerCase();if(![".tsx",".ts"].includes(t))return e.raw;let r=bn(e.filename),o=await Rn(e.filename),n=wn.createSourceFile(o,e.raw,{scriptKind:r});for(let s of n.getImportStringLiterals()){let i=vn(s.getLiteralValue(),e.config);s.setLiteralValue(i);}return n.getText()}function vn(e,t){if(e.startsWith("@/workflows/")){let r=e.replace(/^@\/workflows\//,"");return `${t.aliases.api}/workflows/${r}`}if(e==="@/workflows")return `${t.aliases.api}/workflows`;if(e.startsWith("@/api/")){let r=e.replace(/^@\/api\//,"");return `${t.aliases.api}/api/${r}`}if(e==="@/api")return `${t.aliases.api}/api`;if(e.startsWith("@/links/")){let r=e.replace(/^@\/links\//,"");return `${t.aliases.api}/links/${r}`}if(e==="@/links")return `${t.aliases.api}/links`;if(e.startsWith("@/modules/")){let r=e.replace(/^@\/modules\//,"");return `${t.aliases.api}/modules/${r}`}if(e==="@/modules")return `${t.aliases.api}/modules`;if(e.startsWith("@/lib/")){let r=e.replace(/^@\/lib\//,"");return `${t.aliases.api}/lib/${r}`}if(e==="@/lib")return `${t.aliases.api}/lib`;if(e.startsWith("@/vendor/")){let r=e.replace(/^@\/vendor\//,"");return `${t.aliases.vendor}/${r}`}if(e==="@/vendor")return t.aliases.vendor;if(e.startsWith("@/admin/")){let r=e.replace(/^@\/admin\//,"");return `${t.aliases.admin}/${r}`}return e==="@/admin"?t.aliases.admin:e}async function Rr(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[],filesDeclined:[]};r={overwrite:false,silent:false,yes:false,...r};let o=w("Updating files.",{silent:r.silent})?.start(),n=await k(t.resolvedPaths.cwd),s=[],i=[],p=[],l=[];for(let m of e){let d=He(m,t,{isSrcDir:n?.isSrcDir??false,path:r.path??""}),h=basename(m.path),y=E__default.dirname(d),R=existsSync(d);if(R&&statSync(d).isDirectory())throw new Error(`Cannot write to ${d}: path exists and is a directory. Please provide a file path instead.`);let I=await qe({filename:m.path,raw:m.content,config:t});if(R&&!r.overwrite){let N=await promises.readFile(d,"utf-8");if(gr(N,I)){p.push(E__default.relative(t.resolvedPaths.cwd,d));continue}if(!r.yes){o.stop();let U=diffLines(N,I);a.info(`
|
|
20
|
+
File: ${u.info(h)}`),Pn(U);let{overwrite:je}=await _e({type:"confirm",name:"overwrite",message:`The file ${u.info(h)} already exists. Would you like to overwrite?`,initial:false});if(!je){l.push(E__default.relative(t.resolvedPaths.cwd,d));continue}}}existsSync(y)||await promises.mkdir(y,{recursive:true}),await promises.writeFile(d,I,"utf-8"),R?i.push(E__default.relative(t.resolvedPaths.cwd,d)):s.push(E__default.relative(t.resolvedPaths.cwd,d));}let c=s.length+i.length,f=p.length+l.length;if(c>0){if(o?.succeed(),f>0&&!r.silent){let m=[];c===1?m.push("1 file updated"):m.push(`${c} files updated`),f===1?m.push("1 file skipped"):m.push(`${f} files skipped`),a.info(`${m.join(", ")}.`);}}else l.length?o?.info("No files were updated."):p.length?o?.info("Already up to date."):o?.info("No files to update.");return {filesCreated:s,filesUpdated:i,filesSkipped:p,filesDeclined:l}}var In=3;function Cn(e,t=In){let r=[],o=new Set;for(let s=0;s<e.length;s++)(e[s]?.added||e[s]?.removed)&&o.add(s);if(o.size===0)return r;let n=new Map;for(let s=0;s<e.length;s++){let i=e[s];if(i)if(i.added||i.removed)n.set(s,"full");else {let p=o.has(s-1),l=o.has(s+1);p&&l?n.set(s,"both"):p?n.set(s,"start"):l&&n.set(s,"end");}}for(let s=0;s<e.length;s++){let i=e[s],p=n.get(s);if(!(!i||!p))if(i.added){let l=i.value.split(`
|
|
21
|
+
`);l[l.length-1]===""&&l.pop();for(let c of l)r.push(`+ ${c}`);}else if(i.removed){let l=i.value.split(`
|
|
22
|
+
`);l[l.length-1]===""&&l.pop();for(let c of l)r.push(`- ${c}`);}else {let l=i.value.split(`
|
|
23
|
+
`);l[l.length-1]===""&&l.pop();let c=[];p==="full"||l.length<=t*2+1?c=l.map(f=>` ${f}`):p==="start"?(c=l.slice(0,t).map(f=>` ${f}`),l.length>t&&c.push(` ... ${l.length-t} lines hidden ...`)):p==="end"?(l.length>t&&c.push(` ... ${l.length-t} lines hidden ...`),c.push(...l.slice(-t).map(f=>` ${f}`))):p==="both"&&(l.length<=t*2+1?c=l.map(f=>` ${f}`):c=[...l.slice(0,t).map(f=>` ${f}`),` ... ${l.length-t*2} lines hidden ...`,...l.slice(-t).map(f=>` ${f}`)]),r.push(...c);}}return r}function Pn(e){let t=Cn(e);if(t.length!==0)for(let r of t)r.startsWith("+ ")?process.stdout.write(`${u.success(r)}
|
|
24
|
+
`):r.startsWith("- ")?process.stdout.write(`${u.error(r)}
|
|
25
|
+
`):r.includes("lines hidden")?process.stdout.write(`${u.info(r)}
|
|
26
26
|
`):process.stdout.write(`${r}
|
|
27
|
-
`);}async function
|
|
28
|
-
`,{mode:384});}catch{}}},M=new yt;var
|
|
29
|
-
`)));},
|
|
30
|
-
You may now add blocks.`),a.break(),await
|
|
31
|
-
`,"utf8"),o.succeed(),await
|
|
32
|
-
Before you can build the registry, you must create a valid ${l.info("blocks.json")} file by running the ${l.info("init")} command.`),a.break(),process.exit(1);}}var is=z$1.object({cwd:z$1.string(),registryFile:z$1.string(),outputDir:z$1.string(),verbose:z$1.boolean().optional().default(false)}),$r=new Command().name("registry:build").description("builds the registry").argument("[registry]","path to registry.json file","./registry.json").option("-o, --output <path>","destination directory for json files","./r").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("-v, --verbose","verbose output").action(async(e,t)=>{await ss({cwd:R.resolve(t.cwd),registryFile:e,outputDir:t.output,verbose:t.verbose});});async function ss(e){try{H();let t=is.parse(e),[{errors:r,resolvePaths:o,config:i},s]=await Promise.all([Tr(t),k(t.cwd)]);(r[S]||!s)&&(a.error(`A ${l.info("blocks.json")} file is required to build the registry. Run ${l.info("mercur init")} to create one.`),a.break(),await P({type:"build",payload:{outcome:"missing_config"}},{cwd:t.cwd}),process.exit(1)),(r[z]||!o)&&(a.error(`We could not find a registry file at ${l.info(R.resolve(t.cwd,t.registryFile))}.`),a.break(),await P({type:"build",payload:{outcome:"missing_registry_file"}},{cwd:t.cwd}),process.exit(1));let n=await L.readFile(o.registryFile,"utf-8"),m=K.safeParse(JSON.parse(n));m.success||(a.error(`Invalid registry file found at ${l.info(o.registryFile)}.`),a.break(),process.exit(1));let p=v("Building registry..."),d=await ns(m.data,i,s);for(let u of d.items)u.files=u.files?.filter((c,f,y)=>f===y.findIndex(h=>h.path===c.path)),u.dependencies&&(u.dependencies=u.dependencies.filter((c,f,y)=>f===y.findIndex(h=>h===c)));for(let u of d.items){if(!u.files)continue;p.start(`Building ${u.name}...`),u.$schema=Gt;for(let f of u.files){let y=s.isSrcDir?"src":"",h=R.resolve(o.cwd,y,f.path);try{if(!(await L.stat(h)).isFile())continue;f.content=await L.readFile(h,"utf-8");}catch(w){console.error("Error reading file in registry build:",h,w);continue}}let c=T.safeParse(u);if(!c.success){a.error(`Invalid registry item found for ${l.info(u.name)}.`);continue}await L.writeFile(R.resolve(o.outputDir,`${c.data.name}.json`),JSON.stringify(c.data,null,2));}if(await L.copyFile(o.registryFile,R.resolve(o.outputDir,"registry.json")),p.succeed("Building registry."),t.verbose){v(`The registry has ${l.info(d.items.length.toString())} items:`).succeed();for(let u of d.items){a.log(` - ${u.name}`);for(let c of u.files??[])a.log(` - ${c.path}`);}}await P({type:"build",payload:{outcome:"success"}},{cwd:t.cwd});}catch(t){a.break(),j(t);}}async function ns(e,t,r){for(let o of e.items)if(o.files?.length)for(let i of o.files){let s=await mt(i.path,t,r);s.files=s.files?.filter(n=>n.path!==i.path),s.files&&o.files.push(...s.files),s.dependencies&&(o.dependencies=o.dependencies?o.dependencies.concat(s.dependencies):s.dependencies);}return e}var Ze=".mercur",oe=/route\.(ts|js)$/,Dr={"/admin/api-keys":'typeof import("@medusajs/medusa/api/admin/api-keys/route")',"/admin/api-keys/:id":'typeof import("@medusajs/medusa/api/admin/api-keys/[id]/route")',"/admin/api-keys/:id/revoke":'typeof import("@medusajs/medusa/api/admin/api-keys/[id]/revoke/route")',"/admin/api-keys/:id/sales-channels":'typeof import("@medusajs/medusa/api/admin/api-keys/[id]/sales-channels/route")',"/admin/campaigns":'typeof import("@medusajs/medusa/api/admin/campaigns/route")',"/admin/campaigns/:id":'typeof import("@medusajs/medusa/api/admin/campaigns/[id]/route")',"/admin/campaigns/:id/promotions":'typeof import("@medusajs/medusa/api/admin/campaigns/[id]/promotions/route")',"/admin/claims":'typeof import("@medusajs/medusa/api/admin/claims/route")',"/admin/claims/:id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/route")',"/admin/claims/:id/cancel":'typeof import("@medusajs/medusa/api/admin/claims/[id]/cancel/route")',"/admin/claims/:id/claim-items":'typeof import("@medusajs/medusa/api/admin/claims/[id]/claim-items/route")',"/admin/claims/:id/claim-items/:action_id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/claim-items/[action_id]/route")',"/admin/claims/:id/inbound/items":'typeof import("@medusajs/medusa/api/admin/claims/[id]/inbound/items/route")',"/admin/claims/:id/inbound/items/:action_id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/inbound/items/[action_id]/route")',"/admin/claims/:id/inbound/shipping-method":'typeof import("@medusajs/medusa/api/admin/claims/[id]/inbound/shipping-method/route")',"/admin/claims/:id/inbound/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/inbound/shipping-method/[action_id]/route")',"/admin/claims/:id/outbound/items":'typeof import("@medusajs/medusa/api/admin/claims/[id]/outbound/items/route")',"/admin/claims/:id/outbound/items/:action_id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/outbound/items/[action_id]/route")',"/admin/claims/:id/outbound/shipping-method":'typeof import("@medusajs/medusa/api/admin/claims/[id]/outbound/shipping-method/route")',"/admin/claims/:id/outbound/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/claims/[id]/outbound/shipping-method/[action_id]/route")',"/admin/claims/:id/request":'typeof import("@medusajs/medusa/api/admin/claims/[id]/request/route")',"/admin/collections":'typeof import("@medusajs/medusa/api/admin/collections/route")',"/admin/collections/:id":'typeof import("@medusajs/medusa/api/admin/collections/[id]/route")',"/admin/collections/:id/products":'typeof import("@medusajs/medusa/api/admin/collections/[id]/products/route")',"/admin/currencies":'typeof import("@medusajs/medusa/api/admin/currencies/route")',"/admin/currencies/:code":'typeof import("@medusajs/medusa/api/admin/currencies/[code]/route")',"/admin/customer-groups":'typeof import("@medusajs/medusa/api/admin/customer-groups/route")',"/admin/customer-groups/:id":'typeof import("@medusajs/medusa/api/admin/customer-groups/[id]/route")',"/admin/customer-groups/:id/customers":'typeof import("@medusajs/medusa/api/admin/customer-groups/[id]/customers/route")',"/admin/customers":'typeof import("@medusajs/medusa/api/admin/customers/route")',"/admin/customers/:id":'typeof import("@medusajs/medusa/api/admin/customers/[id]/route")',"/admin/customers/:id/addresses":'typeof import("@medusajs/medusa/api/admin/customers/[id]/addresses/route")',"/admin/customers/:id/addresses/:address_id":'typeof import("@medusajs/medusa/api/admin/customers/[id]/addresses/[address_id]/route")',"/admin/customers/:id/customer-groups":'typeof import("@medusajs/medusa/api/admin/customers/[id]/customer-groups/route")',"/admin/draft-orders":'typeof import("@medusajs/medusa/api/admin/draft-orders/route")',"/admin/draft-orders/:id":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/route")',"/admin/draft-orders/:id/convert-to-order":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/convert-to-order/route")',"/admin/draft-orders/:id/edit":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/route")',"/admin/draft-orders/:id/edit/confirm":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/confirm/route")',"/admin/draft-orders/:id/edit/items":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/route")',"/admin/draft-orders/:id/edit/items/:action_id":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/[action_id]/route")',"/admin/draft-orders/:id/edit/items/item/:item_id":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/item/[item_id]/route")',"/admin/draft-orders/:id/edit/promotions":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/promotions/route")',"/admin/draft-orders/:id/edit/request":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/request/route")',"/admin/draft-orders/:id/edit/shipping-methods":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/route")',"/admin/draft-orders/:id/edit/shipping-methods/:action_id":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/[action_id]/route")',"/admin/draft-orders/:id/edit/shipping-methods/method/:method_id":'typeof import("@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/method/[method_id]/route")',"/admin/exchanges":'typeof import("@medusajs/medusa/api/admin/exchanges/route")',"/admin/exchanges/:id":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/route")',"/admin/exchanges/:id/cancel":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/cancel/route")',"/admin/exchanges/:id/inbound/items":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/inbound/items/route")',"/admin/exchanges/:id/inbound/items/:action_id":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/inbound/items/[action_id]/route")',"/admin/exchanges/:id/inbound/shipping-method":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/inbound/shipping-method/route")',"/admin/exchanges/:id/inbound/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/inbound/shipping-method/[action_id]/route")',"/admin/exchanges/:id/outbound/items":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/outbound/items/route")',"/admin/exchanges/:id/outbound/items/:action_id":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/outbound/items/[action_id]/route")',"/admin/exchanges/:id/outbound/shipping-method":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/outbound/shipping-method/route")',"/admin/exchanges/:id/outbound/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/outbound/shipping-method/[action_id]/route")',"/admin/exchanges/:id/request":'typeof import("@medusajs/medusa/api/admin/exchanges/[id]/request/route")',"/admin/feature-flags":'typeof import("@medusajs/medusa/api/admin/feature-flags/route")',"/admin/fulfillment-providers":'typeof import("@medusajs/medusa/api/admin/fulfillment-providers/route")',"/admin/fulfillment-providers/:id/options":'typeof import("@medusajs/medusa/api/admin/fulfillment-providers/[id]/options/route")',"/admin/fulfillment-sets/:id":'typeof import("@medusajs/medusa/api/admin/fulfillment-sets/[id]/route")',"/admin/fulfillment-sets/:id/service-zones":'typeof import("@medusajs/medusa/api/admin/fulfillment-sets/[id]/service-zones/route")',"/admin/fulfillment-sets/:id/service-zones/:zone_id":'typeof import("@medusajs/medusa/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route")',"/admin/fulfillments":'typeof import("@medusajs/medusa/api/admin/fulfillments/route")',"/admin/fulfillments/:id/cancel":'typeof import("@medusajs/medusa/api/admin/fulfillments/[id]/cancel/route")',"/admin/fulfillments/:id/shipment":'typeof import("@medusajs/medusa/api/admin/fulfillments/[id]/shipment/route")',"/admin/index/details":'typeof import("@medusajs/medusa/api/admin/index/details/route")',"/admin/index/sync":'typeof import("@medusajs/medusa/api/admin/index/sync/route")',"/admin/inventory-items":'typeof import("@medusajs/medusa/api/admin/inventory-items/route")',"/admin/inventory-items/:id":'typeof import("@medusajs/medusa/api/admin/inventory-items/[id]/route")',"/admin/inventory-items/:id/location-levels":'typeof import("@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/route")',"/admin/inventory-items/:id/location-levels/:location_id":'typeof import("@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/[location_id]/route")',"/admin/inventory-items/:id/location-levels/batch":'typeof import("@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/batch/route")',"/admin/inventory-items/location-levels/batch":'typeof import("@medusajs/medusa/api/admin/inventory-items/location-levels/batch/route")',"/admin/invites":'typeof import("@medusajs/medusa/api/admin/invites/route")',"/admin/invites/:id":'typeof import("@medusajs/medusa/api/admin/invites/[id]/route")',"/admin/invites/:id/resend":'typeof import("@medusajs/medusa/api/admin/invites/[id]/resend/route")',"/admin/invites/accept":'typeof import("@medusajs/medusa/api/admin/invites/accept/route")',"/admin/locales":'typeof import("@medusajs/medusa/api/admin/locales/route")',"/admin/locales/:code":'typeof import("@medusajs/medusa/api/admin/locales/[code]/route")',"/admin/notifications":'typeof import("@medusajs/medusa/api/admin/notifications/route")',"/admin/notifications/:id":'typeof import("@medusajs/medusa/api/admin/notifications/[id]/route")',"/admin/order-changes/:id":'typeof import("@medusajs/medusa/api/admin/order-changes/[id]/route")',"/admin/order-edits":'typeof import("@medusajs/medusa/api/admin/order-edits/route")',"/admin/order-edits/:id":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/route")',"/admin/order-edits/:id/confirm":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/confirm/route")',"/admin/order-edits/:id/items":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/items/route")',"/admin/order-edits/:id/items/:action_id":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/items/[action_id]/route")',"/admin/order-edits/:id/items/item/:item_id":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/items/item/[item_id]/route")',"/admin/order-edits/:id/request":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/request/route")',"/admin/order-edits/:id/shipping-method":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/shipping-method/route")',"/admin/order-edits/:id/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/order-edits/[id]/shipping-method/[action_id]/route")',"/admin/orders":'typeof import("@medusajs/medusa/api/admin/orders/route")',"/admin/orders/:id":'typeof import("@medusajs/medusa/api/admin/orders/[id]/route")',"/admin/orders/:id/archive":'typeof import("@medusajs/medusa/api/admin/orders/[id]/archive/route")',"/admin/orders/:id/cancel":'typeof import("@medusajs/medusa/api/admin/orders/[id]/cancel/route")',"/admin/orders/:id/changes":'typeof import("@medusajs/medusa/api/admin/orders/[id]/changes/route")',"/admin/orders/:id/complete":'typeof import("@medusajs/medusa/api/admin/orders/[id]/complete/route")',"/admin/orders/:id/credit-lines":'typeof import("@medusajs/medusa/api/admin/orders/[id]/credit-lines/route")',"/admin/orders/:id/fulfillments":'typeof import("@medusajs/medusa/api/admin/orders/[id]/fulfillments/route")',"/admin/orders/:id/fulfillments/:fulfillment_id/cancel":'typeof import("@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/cancel/route")',"/admin/orders/:id/fulfillments/:fulfillment_id/mark-as-delivered":'typeof import("@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/mark-as-delivered/route")',"/admin/orders/:id/fulfillments/:fulfillment_id/shipments":'typeof import("@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/shipments/route")',"/admin/orders/:id/line-items":'typeof import("@medusajs/medusa/api/admin/orders/[id]/line-items/route")',"/admin/orders/:id/preview":'typeof import("@medusajs/medusa/api/admin/orders/[id]/preview/route")',"/admin/orders/:id/shipping-options":'typeof import("@medusajs/medusa/api/admin/orders/[id]/shipping-options/route")',"/admin/orders/:id/transfer":'typeof import("@medusajs/medusa/api/admin/orders/[id]/transfer/route")',"/admin/orders/:id/transfer/cancel":'typeof import("@medusajs/medusa/api/admin/orders/[id]/transfer/cancel/route")',"/admin/orders/export":'typeof import("@medusajs/medusa/api/admin/orders/export/route")',"/admin/payment-collections":'typeof import("@medusajs/medusa/api/admin/payment-collections/route")',"/admin/payment-collections/:id":'typeof import("@medusajs/medusa/api/admin/payment-collections/[id]/route")',"/admin/payment-collections/:id/mark-as-paid":'typeof import("@medusajs/medusa/api/admin/payment-collections/[id]/mark-as-paid/route")',"/admin/payments":'typeof import("@medusajs/medusa/api/admin/payments/route")',"/admin/payments/:id":'typeof import("@medusajs/medusa/api/admin/payments/[id]/route")',"/admin/payments/:id/capture":'typeof import("@medusajs/medusa/api/admin/payments/[id]/capture/route")',"/admin/payments/:id/refund":'typeof import("@medusajs/medusa/api/admin/payments/[id]/refund/route")',"/admin/payments/payment-providers":'typeof import("@medusajs/medusa/api/admin/payments/payment-providers/route")',"/admin/plugins":'typeof import("@medusajs/medusa/api/admin/plugins/route")',"/admin/price-lists":'typeof import("@medusajs/medusa/api/admin/price-lists/route")',"/admin/price-lists/:id":'typeof import("@medusajs/medusa/api/admin/price-lists/[id]/route")',"/admin/price-lists/:id/prices":'typeof import("@medusajs/medusa/api/admin/price-lists/[id]/prices/route")',"/admin/price-lists/:id/prices/batch":'typeof import("@medusajs/medusa/api/admin/price-lists/[id]/prices/batch/route")',"/admin/price-lists/:id/products":'typeof import("@medusajs/medusa/api/admin/price-lists/[id]/products/route")',"/admin/price-preferences":'typeof import("@medusajs/medusa/api/admin/price-preferences/route")',"/admin/price-preferences/:id":'typeof import("@medusajs/medusa/api/admin/price-preferences/[id]/route")',"/admin/product-categories":'typeof import("@medusajs/medusa/api/admin/product-categories/route")',"/admin/product-categories/:id":'typeof import("@medusajs/medusa/api/admin/product-categories/[id]/route")',"/admin/product-categories/:id/products":'typeof import("@medusajs/medusa/api/admin/product-categories/[id]/products/route")',"/admin/product-tags":'typeof import("@medusajs/medusa/api/admin/product-tags/route")',"/admin/product-tags/:id":'typeof import("@medusajs/medusa/api/admin/product-tags/[id]/route")',"/admin/product-types":'typeof import("@medusajs/medusa/api/admin/product-types/route")',"/admin/product-types/:id":'typeof import("@medusajs/medusa/api/admin/product-types/[id]/route")',"/admin/product-variants":'typeof import("@medusajs/medusa/api/admin/product-variants/route")',"/admin/products":'typeof import("@medusajs/medusa/api/admin/products/route")',"/admin/products/:id":'typeof import("@medusajs/medusa/api/admin/products/[id]/route")',"/admin/products/:id/images/:image_id/variants/batch":'typeof import("@medusajs/medusa/api/admin/products/[id]/images/[image_id]/variants/batch/route")',"/admin/products/:id/options":'typeof import("@medusajs/medusa/api/admin/products/[id]/options/route")',"/admin/products/:id/options/:option_id":'typeof import("@medusajs/medusa/api/admin/products/[id]/options/[option_id]/route")',"/admin/products/:id/variants":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/route")',"/admin/products/:id/variants/:variant_id":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/route")',"/admin/products/:id/variants/:variant_id/images/batch":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/images/batch/route")',"/admin/products/:id/variants/:variant_id/inventory-items":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/inventory-items/route")',"/admin/products/:id/variants/:variant_id/inventory-items/:inventory_item_id":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route")',"/admin/products/:id/variants/batch":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/batch/route")',"/admin/products/:id/variants/inventory-items/batch":'typeof import("@medusajs/medusa/api/admin/products/[id]/variants/inventory-items/batch/route")',"/admin/products/batch":'typeof import("@medusajs/medusa/api/admin/products/batch/route")',"/admin/products/export":'typeof import("@medusajs/medusa/api/admin/products/export/route")',"/admin/products/import":'typeof import("@medusajs/medusa/api/admin/products/import/route")',"/admin/products/import/:transaction_id/confirm":'typeof import("@medusajs/medusa/api/admin/products/import/[transaction_id]/confirm/route")',"/admin/products/imports":'typeof import("@medusajs/medusa/api/admin/products/imports/route")',"/admin/products/imports/:transaction_id/confirm":'typeof import("@medusajs/medusa/api/admin/products/imports/[transaction_id]/confirm/route")',"/admin/promotions":'typeof import("@medusajs/medusa/api/admin/promotions/route")',"/admin/promotions/:id":'typeof import("@medusajs/medusa/api/admin/promotions/[id]/route")',"/admin/promotions/:id/:rule_type":'typeof import("@medusajs/medusa/api/admin/promotions/[id]/[rule_type]/route")',"/admin/promotions/:id/buy-rules/batch":'typeof import("@medusajs/medusa/api/admin/promotions/[id]/buy-rules/batch/route")',"/admin/promotions/:id/rules/batch":'typeof import("@medusajs/medusa/api/admin/promotions/[id]/rules/batch/route")',"/admin/promotions/:id/target-rules/batch":'typeof import("@medusajs/medusa/api/admin/promotions/[id]/target-rules/batch/route")',"/admin/promotions/rule-attribute-options/:rule_type":'typeof import("@medusajs/medusa/api/admin/promotions/rule-attribute-options/[rule_type]/route")',"/admin/promotions/rule-value-options/:rule_type/:rule_attribute_id":'typeof import("@medusajs/medusa/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route")',"/admin/rbac/policies":'typeof import("@medusajs/medusa/api/admin/rbac/policies/route")',"/admin/rbac/policies/:id":'typeof import("@medusajs/medusa/api/admin/rbac/policies/[id]/route")',"/admin/rbac/roles":'typeof import("@medusajs/medusa/api/admin/rbac/roles/route")',"/admin/rbac/roles/:id":'typeof import("@medusajs/medusa/api/admin/rbac/roles/[id]/route")',"/admin/rbac/roles/:id/policies":'typeof import("@medusajs/medusa/api/admin/rbac/roles/[id]/policies/route")',"/admin/rbac/roles/:id/policies/:policy_id":'typeof import("@medusajs/medusa/api/admin/rbac/roles/[id]/policies/[policy_id]/route")',"/admin/refund-reasons":'typeof import("@medusajs/medusa/api/admin/refund-reasons/route")',"/admin/refund-reasons/:id":'typeof import("@medusajs/medusa/api/admin/refund-reasons/[id]/route")',"/admin/regions":'typeof import("@medusajs/medusa/api/admin/regions/route")',"/admin/regions/:id":'typeof import("@medusajs/medusa/api/admin/regions/[id]/route")',"/admin/reservations":'typeof import("@medusajs/medusa/api/admin/reservations/route")',"/admin/reservations/:id":'typeof import("@medusajs/medusa/api/admin/reservations/[id]/route")',"/admin/return-reasons":'typeof import("@medusajs/medusa/api/admin/return-reasons/route")',"/admin/return-reasons/:id":'typeof import("@medusajs/medusa/api/admin/return-reasons/[id]/route")',"/admin/returns":'typeof import("@medusajs/medusa/api/admin/returns/route")',"/admin/returns/:id":'typeof import("@medusajs/medusa/api/admin/returns/[id]/route")',"/admin/returns/:id/cancel":'typeof import("@medusajs/medusa/api/admin/returns/[id]/cancel/route")',"/admin/returns/:id/dismiss-items":'typeof import("@medusajs/medusa/api/admin/returns/[id]/dismiss-items/route")',"/admin/returns/:id/dismiss-items/:action_id":'typeof import("@medusajs/medusa/api/admin/returns/[id]/dismiss-items/[action_id]/route")',"/admin/returns/:id/receive":'typeof import("@medusajs/medusa/api/admin/returns/[id]/receive/route")',"/admin/returns/:id/receive-items":'typeof import("@medusajs/medusa/api/admin/returns/[id]/receive-items/route")',"/admin/returns/:id/receive-items/:action_id":'typeof import("@medusajs/medusa/api/admin/returns/[id]/receive-items/[action_id]/route")',"/admin/returns/:id/receive/confirm":'typeof import("@medusajs/medusa/api/admin/returns/[id]/receive/confirm/route")',"/admin/returns/:id/request":'typeof import("@medusajs/medusa/api/admin/returns/[id]/request/route")',"/admin/returns/:id/request-items":'typeof import("@medusajs/medusa/api/admin/returns/[id]/request-items/route")',"/admin/returns/:id/request-items/:action_id":'typeof import("@medusajs/medusa/api/admin/returns/[id]/request-items/[action_id]/route")',"/admin/returns/:id/shipping-method":'typeof import("@medusajs/medusa/api/admin/returns/[id]/shipping-method/route")',"/admin/returns/:id/shipping-method/:action_id":'typeof import("@medusajs/medusa/api/admin/returns/[id]/shipping-method/[action_id]/route")',"/admin/sales-channels":'typeof import("@medusajs/medusa/api/admin/sales-channels/route")',"/admin/sales-channels/:id":'typeof import("@medusajs/medusa/api/admin/sales-channels/[id]/route")',"/admin/sales-channels/:id/products":'typeof import("@medusajs/medusa/api/admin/sales-channels/[id]/products/route")',"/admin/shipping-option-types":'typeof import("@medusajs/medusa/api/admin/shipping-option-types/route")',"/admin/shipping-option-types/:id":'typeof import("@medusajs/medusa/api/admin/shipping-option-types/[id]/route")',"/admin/shipping-options":'typeof import("@medusajs/medusa/api/admin/shipping-options/route")',"/admin/shipping-options/:id":'typeof import("@medusajs/medusa/api/admin/shipping-options/[id]/route")',"/admin/shipping-options/:id/rules/batch":'typeof import("@medusajs/medusa/api/admin/shipping-options/[id]/rules/batch/route")',"/admin/shipping-profiles":'typeof import("@medusajs/medusa/api/admin/shipping-profiles/route")',"/admin/shipping-profiles/:id":'typeof import("@medusajs/medusa/api/admin/shipping-profiles/[id]/route")',"/admin/stock-locations":'typeof import("@medusajs/medusa/api/admin/stock-locations/route")',"/admin/stock-locations/:id":'typeof import("@medusajs/medusa/api/admin/stock-locations/[id]/route")',"/admin/stock-locations/:id/fulfillment-providers":'typeof import("@medusajs/medusa/api/admin/stock-locations/[id]/fulfillment-providers/route")',"/admin/stock-locations/:id/fulfillment-sets":'typeof import("@medusajs/medusa/api/admin/stock-locations/[id]/fulfillment-sets/route")',"/admin/stock-locations/:id/sales-channels":'typeof import("@medusajs/medusa/api/admin/stock-locations/[id]/sales-channels/route")',"/admin/stores":'typeof import("@medusajs/medusa/api/admin/stores/route")',"/admin/stores/:id":'typeof import("@medusajs/medusa/api/admin/stores/[id]/route")',"/admin/tax-providers":'typeof import("@medusajs/medusa/api/admin/tax-providers/route")',"/admin/tax-rates":'typeof import("@medusajs/medusa/api/admin/tax-rates/route")',"/admin/tax-rates/:id":'typeof import("@medusajs/medusa/api/admin/tax-rates/[id]/route")',"/admin/tax-rates/:id/rules":'typeof import("@medusajs/medusa/api/admin/tax-rates/[id]/rules/route")',"/admin/tax-rates/:id/rules/:rule_id":'typeof import("@medusajs/medusa/api/admin/tax-rates/[id]/rules/[rule_id]/route")',"/admin/tax-regions":'typeof import("@medusajs/medusa/api/admin/tax-regions/route")',"/admin/tax-regions/:id":'typeof import("@medusajs/medusa/api/admin/tax-regions/[id]/route")',"/admin/translations":'typeof import("@medusajs/medusa/api/admin/translations/route")',"/admin/translations/batch":'typeof import("@medusajs/medusa/api/admin/translations/batch/route")',"/admin/translations/entities":'typeof import("@medusajs/medusa/api/admin/translations/entities/route")',"/admin/translations/settings":'typeof import("@medusajs/medusa/api/admin/translations/settings/route")',"/admin/translations/settings/batch":'typeof import("@medusajs/medusa/api/admin/translations/settings/batch/route")',"/admin/translations/statistics":'typeof import("@medusajs/medusa/api/admin/translations/statistics/route")',"/admin/uploads":'typeof import("@medusajs/medusa/api/admin/uploads/route")',"/admin/uploads/:id":'typeof import("@medusajs/medusa/api/admin/uploads/[id]/route")',"/admin/uploads/presigned-urls":'typeof import("@medusajs/medusa/api/admin/uploads/presigned-urls/route")',"/admin/users":'typeof import("@medusajs/medusa/api/admin/users/route")',"/admin/users/:id":'typeof import("@medusajs/medusa/api/admin/users/[id]/route")',"/admin/users/me":'typeof import("@medusajs/medusa/api/admin/users/me/route")',"/admin/views/:entity/columns":'typeof import("@medusajs/medusa/api/admin/views/[entity]/columns/route")',"/admin/views/:entity/configurations":'typeof import("@medusajs/medusa/api/admin/views/[entity]/configurations/route")',"/admin/views/:entity/configurations/:id":'typeof import("@medusajs/medusa/api/admin/views/[entity]/configurations/[id]/route")',"/admin/views/:entity/configurations/active":'typeof import("@medusajs/medusa/api/admin/views/[entity]/configurations/active/route")',"/admin/workflows-executions":'typeof import("@medusajs/medusa/api/admin/workflows-executions/route")',"/admin/workflows-executions/:id":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[id]/route")',"/admin/workflows-executions/:workflow_id/:transaction_id":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/[transaction_id]/route")',"/admin/workflows-executions/:workflow_id/:transaction_id/:step_id/subscribe":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/[transaction_id]/[step_id]/subscribe/route")',"/admin/workflows-executions/:workflow_id/run":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/run/route")',"/admin/workflows-executions/:workflow_id/steps/failure":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/steps/failure/route")',"/admin/workflows-executions/:workflow_id/steps/success":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/steps/success/route")',"/admin/workflows-executions/:workflow_id/subscribe":'typeof import("@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/subscribe/route")',"/auth/:actor_type/:auth_provider":'typeof import("@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/route")',"/auth/:actor_type/:auth_provider/callback":'typeof import("@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/callback/route")',"/auth/:actor_type/:auth_provider/register":'typeof import("@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/register/route")',"/auth/:actor_type/:auth_provider/reset-password":'typeof import("@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/reset-password/route")',"/auth/:actor_type/:auth_provider/update":'typeof import("@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/update/route")',"/auth/session":'typeof import("@medusajs/medusa/api/auth/session/route")',"/auth/token/refresh":'typeof import("@medusajs/medusa/api/auth/token/refresh/route")',"/store/carts":'typeof import("@medusajs/medusa/api/store/carts/route")',"/store/carts/:id":'typeof import("@medusajs/medusa/api/store/carts/[id]/route")',"/store/carts/:id/complete":'typeof import("@medusajs/medusa/api/store/carts/[id]/complete/route")',"/store/carts/:id/customer":'typeof import("@medusajs/medusa/api/store/carts/[id]/customer/route")',"/store/carts/:id/line-items":'typeof import("@medusajs/medusa/api/store/carts/[id]/line-items/route")',"/store/carts/:id/line-items/:line_id":'typeof import("@medusajs/medusa/api/store/carts/[id]/line-items/[line_id]/route")',"/store/carts/:id/promotions":'typeof import("@medusajs/medusa/api/store/carts/[id]/promotions/route")',"/store/carts/:id/shipping-methods":'typeof import("@medusajs/medusa/api/store/carts/[id]/shipping-methods/route")',"/store/carts/:id/taxes":'typeof import("@medusajs/medusa/api/store/carts/[id]/taxes/route")',"/store/collections":'typeof import("@medusajs/medusa/api/store/collections/route")',"/store/collections/:id":'typeof import("@medusajs/medusa/api/store/collections/[id]/route")',"/store/currencies":'typeof import("@medusajs/medusa/api/store/currencies/route")',"/store/currencies/:code":'typeof import("@medusajs/medusa/api/store/currencies/[code]/route")',"/store/customers":'typeof import("@medusajs/medusa/api/store/customers/route")',"/store/customers/me":'typeof import("@medusajs/medusa/api/store/customers/me/route")',"/store/customers/me/addresses":'typeof import("@medusajs/medusa/api/store/customers/me/addresses/route")',"/store/customers/me/addresses/:address_id":'typeof import("@medusajs/medusa/api/store/customers/me/addresses/[address_id]/route")',"/store/locales":'typeof import("@medusajs/medusa/api/store/locales/route")',"/store/orders":'typeof import("@medusajs/medusa/api/store/orders/route")',"/store/orders/:id":'typeof import("@medusajs/medusa/api/store/orders/[id]/route")',"/store/orders/:id/transfer/accept":'typeof import("@medusajs/medusa/api/store/orders/[id]/transfer/accept/route")',"/store/orders/:id/transfer/cancel":'typeof import("@medusajs/medusa/api/store/orders/[id]/transfer/cancel/route")',"/store/orders/:id/transfer/decline":'typeof import("@medusajs/medusa/api/store/orders/[id]/transfer/decline/route")',"/store/orders/:id/transfer/request":'typeof import("@medusajs/medusa/api/store/orders/[id]/transfer/request/route")',"/store/payment-collections":'typeof import("@medusajs/medusa/api/store/payment-collections/route")',"/store/payment-collections/:id/payment-sessions":'typeof import("@medusajs/medusa/api/store/payment-collections/[id]/payment-sessions/route")',"/store/payment-providers":'typeof import("@medusajs/medusa/api/store/payment-providers/route")',"/store/product-categories":'typeof import("@medusajs/medusa/api/store/product-categories/route")',"/store/product-categories/:id":'typeof import("@medusajs/medusa/api/store/product-categories/[id]/route")',"/store/product-tags":'typeof import("@medusajs/medusa/api/store/product-tags/route")',"/store/product-tags/:id":'typeof import("@medusajs/medusa/api/store/product-tags/[id]/route")',"/store/product-types":'typeof import("@medusajs/medusa/api/store/product-types/route")',"/store/product-types/:id":'typeof import("@medusajs/medusa/api/store/product-types/[id]/route")',"/store/product-variants":'typeof import("@medusajs/medusa/api/store/product-variants/route")',"/store/product-variants/:id":'typeof import("@medusajs/medusa/api/store/product-variants/[id]/route")',"/store/products":'typeof import("@medusajs/medusa/api/store/products/route")',"/store/products/:id":'typeof import("@medusajs/medusa/api/store/products/[id]/route")',"/store/regions":'typeof import("@medusajs/medusa/api/store/regions/route")',"/store/regions/:id":'typeof import("@medusajs/medusa/api/store/regions/[id]/route")',"/store/return-reasons":'typeof import("@medusajs/medusa/api/store/return-reasons/route")',"/store/return-reasons/:id":'typeof import("@medusajs/medusa/api/store/return-reasons/[id]/route")',"/store/returns":'typeof import("@medusajs/medusa/api/store/returns/route")',"/store/shipping-options":'typeof import("@medusajs/medusa/api/store/shipping-options/route")',"/store/shipping-options/:id/calculate":'typeof import("@medusajs/medusa/api/store/shipping-options/[id]/calculate/route")'},Nr={"/admin/commission-rates":'typeof import("@mercurjs/core/api/admin/commission-rates/route")',"/admin/commission-rates/:id":'typeof import("@mercurjs/core/api/admin/commission-rates/[id]/route")',"/admin/commission-rates/:id/rules":'typeof import("@mercurjs/core/api/admin/commission-rates/[id]/rules/route")',"/admin/members":'typeof import("@mercurjs/core/api/admin/members/route")',"/admin/offers":'typeof import("@mercurjs/core/api/admin/offers/route")',"/admin/offers/:id":'typeof import("@mercurjs/core/api/admin/offers/[id]/route")',"/admin/offers/batch":'typeof import("@mercurjs/core/api/admin/offers/batch/route")',"/admin/order-groups":'typeof import("@mercurjs/core/api/admin/order-groups/route")',"/admin/order-groups/:id":'typeof import("@mercurjs/core/api/admin/order-groups/[id]/route")',"/admin/orders":'typeof import("@mercurjs/core/api/admin/orders/route")',"/admin/orders/:id/order-group":'typeof import("@mercurjs/core/api/admin/orders/[id]/order-group/route")',"/admin/payouts":'typeof import("@mercurjs/core/api/admin/payouts/route")',"/admin/payouts/:id":'typeof import("@mercurjs/core/api/admin/payouts/[id]/route")',"/admin/product-attributes":'typeof import("@mercurjs/core/api/admin/product-attributes/route")',"/admin/product-attributes/:id":'typeof import("@mercurjs/core/api/admin/product-attributes/[id]/route")',"/admin/product-attributes/:id/values":'typeof import("@mercurjs/core/api/admin/product-attributes/[id]/values/route")',"/admin/product-attributes/:id/values/:value_id":'typeof import("@mercurjs/core/api/admin/product-attributes/[id]/values/[value_id]/route")',"/admin/product-brands":'typeof import("@mercurjs/core/api/admin/product-brands/route")',"/admin/product-brands/:id":'typeof import("@mercurjs/core/api/admin/product-brands/[id]/route")',"/admin/product-brands/:id/sellers":'typeof import("@mercurjs/core/api/admin/product-brands/[id]/sellers/route")',"/admin/product-categories":'typeof import("@mercurjs/core/api/admin/product-categories/route")',"/admin/product-categories/:id":'typeof import("@mercurjs/core/api/admin/product-categories/[id]/route")',"/admin/product-categories/:id/products":'typeof import("@mercurjs/core/api/admin/product-categories/[id]/products/route")',"/admin/product-categories/:id/sellers":'typeof import("@mercurjs/core/api/admin/product-categories/[id]/sellers/route")',"/admin/product-changes/:id/cancel":'typeof import("@mercurjs/core/api/admin/product-changes/[id]/cancel/route")',"/admin/product-changes/:id/confirm":'typeof import("@mercurjs/core/api/admin/product-changes/[id]/confirm/route")',"/admin/products":'typeof import("@mercurjs/core/api/admin/products/route")',"/admin/products/:id":'typeof import("@mercurjs/core/api/admin/products/[id]/route")',"/admin/products/:id/attributes":'typeof import("@mercurjs/core/api/admin/products/[id]/attributes/route")',"/admin/products/:id/attributes/:attribute_id":'typeof import("@mercurjs/core/api/admin/products/[id]/attributes/[attribute_id]/route")',"/admin/products/:id/attributes/batch":'typeof import("@mercurjs/core/api/admin/products/[id]/attributes/batch/route")',"/admin/products/:id/confirm":'typeof import("@mercurjs/core/api/admin/products/[id]/confirm/route")',"/admin/products/:id/preview":'typeof import("@mercurjs/core/api/admin/products/[id]/preview/route")',"/admin/products/:id/reject":'typeof import("@mercurjs/core/api/admin/products/[id]/reject/route")',"/admin/products/:id/request-changes":'typeof import("@mercurjs/core/api/admin/products/[id]/request-changes/route")',"/admin/products/:id/variants":'typeof import("@mercurjs/core/api/admin/products/[id]/variants/route")',"/admin/products/:id/variants/:variant_id":'typeof import("@mercurjs/core/api/admin/products/[id]/variants/[variant_id]/route")',"/admin/products/batch":'typeof import("@mercurjs/core/api/admin/products/batch/route")',"/admin/sellers":'typeof import("@mercurjs/core/api/admin/sellers/route")',"/admin/sellers/:id":'typeof import("@mercurjs/core/api/admin/sellers/[id]/route")',"/admin/sellers/:id/address":'typeof import("@mercurjs/core/api/admin/sellers/[id]/address/route")',"/admin/sellers/:id/approve":'typeof import("@mercurjs/core/api/admin/sellers/[id]/approve/route")',"/admin/sellers/:id/members":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/route")',"/admin/sellers/:id/members/:member_id":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/[member_id]/route")',"/admin/sellers/:id/members/invite":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/invite/route")',"/admin/sellers/:id/members/invites":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/invites/route")',"/admin/sellers/:id/members/invites/:invite_id":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/invites/[invite_id]/route")',"/admin/sellers/:id/members/invites/:invite_id/resend":'typeof import("@mercurjs/core/api/admin/sellers/[id]/members/invites/[invite_id]/resend/route")',"/admin/sellers/:id/payment-details":'typeof import("@mercurjs/core/api/admin/sellers/[id]/payment-details/route")',"/admin/sellers/:id/products":'typeof import("@mercurjs/core/api/admin/sellers/[id]/products/route")',"/admin/sellers/:id/professional-details":'typeof import("@mercurjs/core/api/admin/sellers/[id]/professional-details/route")',"/admin/sellers/:id/suspend":'typeof import("@mercurjs/core/api/admin/sellers/[id]/suspend/route")',"/admin/sellers/:id/terminate":'typeof import("@mercurjs/core/api/admin/sellers/[id]/terminate/route")',"/admin/sellers/:id/unsuspend":'typeof import("@mercurjs/core/api/admin/sellers/[id]/unsuspend/route")',"/admin/sellers/:id/unterminate":'typeof import("@mercurjs/core/api/admin/sellers/[id]/unterminate/route")',"/hooks/payout":'typeof import("@mercurjs/core/api/hooks/payout/route")',"/store/carts/:id/complete":'typeof import("@mercurjs/core/api/store/carts/[id]/complete/route")',"/store/carts/:id/line-items":'typeof import("@mercurjs/core/api/store/carts/[id]/line-items/route")',"/store/carts/:id/promotions":'typeof import("@mercurjs/core/api/store/carts/[id]/promotions/route")',"/store/carts/:id/shipping-methods":'typeof import("@mercurjs/core/api/store/carts/[id]/shipping-methods/route")',"/store/order-groups":'typeof import("@mercurjs/core/api/store/order-groups/route")',"/store/order-groups/:id":'typeof import("@mercurjs/core/api/store/order-groups/[id]/route")',"/store/product-attributes":'typeof import("@mercurjs/core/api/store/product-attributes/route")',"/store/product-attributes/:id":'typeof import("@mercurjs/core/api/store/product-attributes/[id]/route")',"/store/product-brands":'typeof import("@mercurjs/core/api/store/product-brands/route")',"/store/product-brands/:id":'typeof import("@mercurjs/core/api/store/product-brands/[id]/route")',"/store/product-categories":'typeof import("@mercurjs/core/api/store/product-categories/route")',"/store/product-categories/:id":'typeof import("@mercurjs/core/api/store/product-categories/[id]/route")',"/store/products":'typeof import("@mercurjs/core/api/store/products/route")',"/store/products/:id":'typeof import("@mercurjs/core/api/store/products/[id]/route")',"/store/sellers":'typeof import("@mercurjs/core/api/store/sellers/route")',"/store/sellers/:id":'typeof import("@mercurjs/core/api/store/sellers/[id]/route")',"/store/shipping-options":'typeof import("@mercurjs/core/api/store/shipping-options/route")',"/vendor/campaigns":'typeof import("@mercurjs/core/api/vendor/campaigns/route")',"/vendor/campaigns/:id":'typeof import("@mercurjs/core/api/vendor/campaigns/[id]/route")',"/vendor/campaigns/:id/promotions":'typeof import("@mercurjs/core/api/vendor/campaigns/[id]/promotions/route")',"/vendor/collections":'typeof import("@mercurjs/core/api/vendor/collections/route")',"/vendor/collections/:id":'typeof import("@mercurjs/core/api/vendor/collections/[id]/route")',"/vendor/collections/:id/products":'typeof import("@mercurjs/core/api/vendor/collections/[id]/products/route")',"/vendor/currencies":'typeof import("@mercurjs/core/api/vendor/currencies/route")',"/vendor/currencies/:code":'typeof import("@mercurjs/core/api/vendor/currencies/[code]/route")',"/vendor/customers":'typeof import("@mercurjs/core/api/vendor/customers/route")',"/vendor/customers/:id":'typeof import("@mercurjs/core/api/vendor/customers/[id]/route")',"/vendor/feature-flags":'typeof import("@mercurjs/core/api/vendor/feature-flags/route")',"/vendor/fulfillment-providers":'typeof import("@mercurjs/core/api/vendor/fulfillment-providers/route")',"/vendor/fulfillment-sets/:id":'typeof import("@mercurjs/core/api/vendor/fulfillment-sets/[id]/route")',"/vendor/fulfillment-sets/:id/service-zones":'typeof import("@mercurjs/core/api/vendor/fulfillment-sets/[id]/service-zones/route")',"/vendor/fulfillment-sets/:id/service-zones/:zone_id":'typeof import("@mercurjs/core/api/vendor/fulfillment-sets/[id]/service-zones/[zone_id]/route")',"/vendor/inventory-items":'typeof import("@mercurjs/core/api/vendor/inventory-items/route")',"/vendor/inventory-items/:id":'typeof import("@mercurjs/core/api/vendor/inventory-items/[id]/route")',"/vendor/inventory-items/:id/location-levels":'typeof import("@mercurjs/core/api/vendor/inventory-items/[id]/location-levels/route")',"/vendor/inventory-items/:id/location-levels/:location_id":'typeof import("@mercurjs/core/api/vendor/inventory-items/[id]/location-levels/[location_id]/route")',"/vendor/inventory-items/:id/location-levels/batch":'typeof import("@mercurjs/core/api/vendor/inventory-items/[id]/location-levels/batch/route")',"/vendor/inventory-items/location-levels/batch":'typeof import("@mercurjs/core/api/vendor/inventory-items/location-levels/batch/route")',"/vendor/members/invites/accept":'typeof import("@mercurjs/core/api/vendor/members/invites/accept/route")',"/vendor/members/me":'typeof import("@mercurjs/core/api/vendor/members/me/route")',"/vendor/offers":'typeof import("@mercurjs/core/api/vendor/offers/route")',"/vendor/offers/:id":'typeof import("@mercurjs/core/api/vendor/offers/[id]/route")',"/vendor/offers/:id/inventory-items/batch":'typeof import("@mercurjs/core/api/vendor/offers/[id]/inventory-items/batch/route")',"/vendor/offers/batch":'typeof import("@mercurjs/core/api/vendor/offers/batch/route")',"/vendor/orders":'typeof import("@mercurjs/core/api/vendor/orders/route")',"/vendor/orders/:id":'typeof import("@mercurjs/core/api/vendor/orders/[id]/route")',"/vendor/orders/:id/cancel":'typeof import("@mercurjs/core/api/vendor/orders/[id]/cancel/route")',"/vendor/orders/:id/changes":'typeof import("@mercurjs/core/api/vendor/orders/[id]/changes/route")',"/vendor/orders/:id/complete":'typeof import("@mercurjs/core/api/vendor/orders/[id]/complete/route")',"/vendor/orders/:id/fulfillments":'typeof import("@mercurjs/core/api/vendor/orders/[id]/fulfillments/route")',"/vendor/orders/:id/fulfillments/:fulfillment_id/cancel":'typeof import("@mercurjs/core/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/cancel/route")',"/vendor/orders/:id/fulfillments/:fulfillment_id/mark-as-delivered":'typeof import("@mercurjs/core/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/mark-as-delivered/route")',"/vendor/orders/:id/fulfillments/:fulfillment_id/shipments":'typeof import("@mercurjs/core/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/shipments/route")',"/vendor/orders/:id/preview":'typeof import("@mercurjs/core/api/vendor/orders/[id]/preview/route")',"/vendor/payments":'typeof import("@mercurjs/core/api/vendor/payments/route")',"/vendor/payments/:id":'typeof import("@mercurjs/core/api/vendor/payments/[id]/route")',"/vendor/payments/:id/capture":'typeof import("@mercurjs/core/api/vendor/payments/[id]/capture/route")',"/vendor/payments/:id/refund":'typeof import("@mercurjs/core/api/vendor/payments/[id]/refund/route")',"/vendor/payments/payment-providers":'typeof import("@mercurjs/core/api/vendor/payments/payment-providers/route")',"/vendor/payout-accounts":'typeof import("@mercurjs/core/api/vendor/payout-accounts/route")',"/vendor/payout-accounts/:id":'typeof import("@mercurjs/core/api/vendor/payout-accounts/[id]/route")',"/vendor/payout-accounts/:id/onboarding":'typeof import("@mercurjs/core/api/vendor/payout-accounts/[id]/onboarding/route")',"/vendor/payouts":'typeof import("@mercurjs/core/api/vendor/payouts/route")',"/vendor/payouts/:id":'typeof import("@mercurjs/core/api/vendor/payouts/[id]/route")',"/vendor/price-lists":'typeof import("@mercurjs/core/api/vendor/price-lists/route")',"/vendor/price-lists/:id":'typeof import("@mercurjs/core/api/vendor/price-lists/[id]/route")',"/vendor/price-lists/:id/prices":'typeof import("@mercurjs/core/api/vendor/price-lists/[id]/prices/route")',"/vendor/price-lists/:id/prices/batch":'typeof import("@mercurjs/core/api/vendor/price-lists/[id]/prices/batch/route")',"/vendor/price-lists/:id/products":'typeof import("@mercurjs/core/api/vendor/price-lists/[id]/products/route")',"/vendor/price-preferences":'typeof import("@mercurjs/core/api/vendor/price-preferences/route")',"/vendor/price-preferences/:id":'typeof import("@mercurjs/core/api/vendor/price-preferences/[id]/route")',"/vendor/product-attributes":'typeof import("@mercurjs/core/api/vendor/product-attributes/route")',"/vendor/product-attributes/:id":'typeof import("@mercurjs/core/api/vendor/product-attributes/[id]/route")',"/vendor/product-brands":'typeof import("@mercurjs/core/api/vendor/product-brands/route")',"/vendor/product-brands/:id":'typeof import("@mercurjs/core/api/vendor/product-brands/[id]/route")',"/vendor/product-categories":'typeof import("@mercurjs/core/api/vendor/product-categories/route")',"/vendor/product-categories/:id":'typeof import("@mercurjs/core/api/vendor/product-categories/[id]/route")',"/vendor/product-tags":'typeof import("@mercurjs/core/api/vendor/product-tags/route")',"/vendor/product-tags/:id":'typeof import("@mercurjs/core/api/vendor/product-tags/[id]/route")',"/vendor/product-types":'typeof import("@mercurjs/core/api/vendor/product-types/route")',"/vendor/product-types/:id":'typeof import("@mercurjs/core/api/vendor/product-types/[id]/route")',"/vendor/product-variants":'typeof import("@mercurjs/core/api/vendor/product-variants/route")',"/vendor/products":'typeof import("@mercurjs/core/api/vendor/products/route")',"/vendor/products/:id":'typeof import("@mercurjs/core/api/vendor/products/[id]/route")',"/vendor/products/:id/attributes":'typeof import("@mercurjs/core/api/vendor/products/[id]/attributes/route")',"/vendor/products/:id/attributes/:attribute_id":'typeof import("@mercurjs/core/api/vendor/products/[id]/attributes/[attribute_id]/route")',"/vendor/products/:id/cancel":'typeof import("@mercurjs/core/api/vendor/products/[id]/cancel/route")',"/vendor/products/:id/preview":'typeof import("@mercurjs/core/api/vendor/products/[id]/preview/route")',"/vendor/products/:id/variants":'typeof import("@mercurjs/core/api/vendor/products/[id]/variants/route")',"/vendor/products/:id/variants/:variant_id":'typeof import("@mercurjs/core/api/vendor/products/[id]/variants/[variant_id]/route")',"/vendor/promotions":'typeof import("@mercurjs/core/api/vendor/promotions/route")',"/vendor/promotions/:id":'typeof import("@mercurjs/core/api/vendor/promotions/[id]/route")',"/vendor/promotions/:id/:rule_type":'typeof import("@mercurjs/core/api/vendor/promotions/[id]/[rule_type]/route")',"/vendor/promotions/:id/buy-rules/batch":'typeof import("@mercurjs/core/api/vendor/promotions/[id]/buy-rules/batch/route")',"/vendor/promotions/:id/rules/batch":'typeof import("@mercurjs/core/api/vendor/promotions/[id]/rules/batch/route")',"/vendor/promotions/:id/target-rules/batch":'typeof import("@mercurjs/core/api/vendor/promotions/[id]/target-rules/batch/route")',"/vendor/promotions/rule-attribute-options/:rule_type":'typeof import("@mercurjs/core/api/vendor/promotions/rule-attribute-options/[rule_type]/route")',"/vendor/promotions/rule-value-options/:rule_type/:rule_attribute_id":'typeof import("@mercurjs/core/api/vendor/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route")',"/vendor/refund-reasons":'typeof import("@mercurjs/core/api/vendor/refund-reasons/route")',"/vendor/refund-reasons/:id":'typeof import("@mercurjs/core/api/vendor/refund-reasons/[id]/route")',"/vendor/regions":'typeof import("@mercurjs/core/api/vendor/regions/route")',"/vendor/regions/:id":'typeof import("@mercurjs/core/api/vendor/regions/[id]/route")',"/vendor/return-reasons":'typeof import("@mercurjs/core/api/vendor/return-reasons/route")',"/vendor/return-reasons/:id":'typeof import("@mercurjs/core/api/vendor/return-reasons/[id]/route")',"/vendor/returns":'typeof import("@mercurjs/core/api/vendor/returns/route")',"/vendor/returns/:id":'typeof import("@mercurjs/core/api/vendor/returns/[id]/route")',"/vendor/returns/:id/cancel":'typeof import("@mercurjs/core/api/vendor/returns/[id]/cancel/route")',"/vendor/returns/:id/dismiss-items":'typeof import("@mercurjs/core/api/vendor/returns/[id]/dismiss-items/route")',"/vendor/returns/:id/dismiss-items/:action_id":'typeof import("@mercurjs/core/api/vendor/returns/[id]/dismiss-items/[action_id]/route")',"/vendor/returns/:id/receive":'typeof import("@mercurjs/core/api/vendor/returns/[id]/receive/route")',"/vendor/returns/:id/receive-items":'typeof import("@mercurjs/core/api/vendor/returns/[id]/receive-items/route")',"/vendor/returns/:id/receive-items/:action_id":'typeof import("@mercurjs/core/api/vendor/returns/[id]/receive-items/[action_id]/route")',"/vendor/returns/:id/receive/confirm":'typeof import("@mercurjs/core/api/vendor/returns/[id]/receive/confirm/route")',"/vendor/returns/:id/request":'typeof import("@mercurjs/core/api/vendor/returns/[id]/request/route")',"/vendor/returns/:id/request-items":'typeof import("@mercurjs/core/api/vendor/returns/[id]/request-items/route")',"/vendor/returns/:id/request-items/:action_id":'typeof import("@mercurjs/core/api/vendor/returns/[id]/request-items/[action_id]/route")',"/vendor/returns/:id/shipping-method":'typeof import("@mercurjs/core/api/vendor/returns/[id]/shipping-method/route")',"/vendor/returns/:id/shipping-method/:action_id":'typeof import("@mercurjs/core/api/vendor/returns/[id]/shipping-method/[action_id]/route")',"/vendor/sales-channels":'typeof import("@mercurjs/core/api/vendor/sales-channels/route")',"/vendor/sales-channels/:id":'typeof import("@mercurjs/core/api/vendor/sales-channels/[id]/route")',"/vendor/sales-channels/:id/products":'typeof import("@mercurjs/core/api/vendor/sales-channels/[id]/products/route")',"/vendor/sellers":'typeof import("@mercurjs/core/api/vendor/sellers/route")',"/vendor/sellers/:id":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/route")',"/vendor/sellers/:id/address":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/address/route")',"/vendor/sellers/:id/members":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/members/route")',"/vendor/sellers/:id/members/:member_id":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/members/[member_id]/route")',"/vendor/sellers/:id/members/invites":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/members/invites/route")',"/vendor/sellers/:id/members/me":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/members/me/route")',"/vendor/sellers/:id/payment-details":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/payment-details/route")',"/vendor/sellers/:id/professional-details":'typeof import("@mercurjs/core/api/vendor/sellers/[id]/professional-details/route")',"/vendor/sellers/me":'typeof import("@mercurjs/core/api/vendor/sellers/me/route")',"/vendor/sellers/select":'typeof import("@mercurjs/core/api/vendor/sellers/select/route")',"/vendor/shipping-option-types":'typeof import("@mercurjs/core/api/vendor/shipping-option-types/route")',"/vendor/shipping-option-types/:id":'typeof import("@mercurjs/core/api/vendor/shipping-option-types/[id]/route")',"/vendor/shipping-options":'typeof import("@mercurjs/core/api/vendor/shipping-options/route")',"/vendor/shipping-options/:id":'typeof import("@mercurjs/core/api/vendor/shipping-options/[id]/route")',"/vendor/shipping-options/:id/rules/batch":'typeof import("@mercurjs/core/api/vendor/shipping-options/[id]/rules/batch/route")',"/vendor/shipping-profiles":'typeof import("@mercurjs/core/api/vendor/shipping-profiles/route")',"/vendor/shipping-profiles/:id":'typeof import("@mercurjs/core/api/vendor/shipping-profiles/[id]/route")',"/vendor/stock-locations":'typeof import("@mercurjs/core/api/vendor/stock-locations/route")',"/vendor/stock-locations/:id":'typeof import("@mercurjs/core/api/vendor/stock-locations/[id]/route")',"/vendor/stock-locations/:id/fulfillment-providers":'typeof import("@mercurjs/core/api/vendor/stock-locations/[id]/fulfillment-providers/route")',"/vendor/stock-locations/:id/fulfillment-sets":'typeof import("@mercurjs/core/api/vendor/stock-locations/[id]/fulfillment-sets/route")',"/vendor/stock-locations/:id/sales-channels":'typeof import("@mercurjs/core/api/vendor/stock-locations/[id]/sales-channels/route")',"/vendor/stores":'typeof import("@mercurjs/core/api/vendor/stores/route")',"/vendor/uploads":'typeof import("@mercurjs/core/api/vendor/uploads/route")'};async function xt(e,t={}){let{pathnameFilter:r,ignoreFilter:o,ignorePartFilter:i,sortPathnames:s=true}=t,n=[],m=[e];for(;m.length>0;){let p=await Promise.all(m.map(async d=>{let u={directories:[],pathnames:[]};try{let c=await L__default.readdir(d,{withFileTypes:!0});for(let f of c){if(i&&i(f.name))continue;let y=R__default.join(d,f.name);o&&o(y)||(f.isDirectory()?u.directories.push(y):(!r||r(y))&&u.pathnames.push(y));}}catch(c){if(c.code!=="ENOENT"||d===e)throw c;return null}return u}));m=[];for(let d of p)d&&(m.push(...d.directories),n.push(...d.pathnames));}return s&&n.sort(),n}async function Qe(e){return await L__default.stat(e).catch(()=>null)!==null}async function Xe(e){await Qe(e)||await L__default.mkdir(e,{recursive:true});}function ge(e){return e.replace(/\\/g,"/")}function Ie(e){return e.split("/").reduce((r,o)=>{if(!o||oe.test(o))return r;if(o.startsWith("[")&&o.endsWith("]")){let i=o.slice(1,-1);return `${r}/:${i}`}return `${r}/${o}`},"")||"/"}async function _t(e){return await Qe(e)?(await xt(e,{pathnameFilter:o=>oe.test(o),ignorePartFilter:o=>o.startsWith("_")||o==="node_modules"})).map(o=>{let i=R__default.relative(e,o);return {filePath:ge(i),route:Ie(ge(i))}}):[]}function kt(e){return e.replace(/[-_]+(.)?/g,(t,r)=>r?r.toUpperCase():"").replace(/^[A-Z]/,t=>t.toLowerCase())}function ms(e){return `../src/api/${e.replace(/\.ts$/,"")}`}function ps(e){return e.startsWith(":")?`$${kt(e.slice(1))}`:kt(e)}function Fr(){return {children:new Map}}function cs(e){let t=Fr();for(let[r,o]of e){let i=r.split("/").filter(Boolean),s=t;for(let n of i){let m=ps(n);s.children.has(m)||s.children.set(m,Fr()),s=s.children.get(m);}s.importType=o;}return t}function Ar(e,t=" "){let r=[];if(e.importType&&r.push(e.importType),e.children.size>0){let o=[];for(let[i,s]of e.children){let n=Ar(s,t+" ");o.push(`${t} ${i}: ${n}`);}r.push(`{
|
|
27
|
+
`);}async function br(e,t,r){if(r={overwrite:false,silent:false,yes:false,...r},!e.length)return;let o=w("Checking registry.",{silent:r.silent})?.start(),n=await ft(e,le(t));if(!n)return o?.fail(),b(new Error("Failed to fetch items from registry."));o?.succeed();let{filesCreated:s,filesUpdated:i}=await Rr(n.files,t,{overwrite:r.overwrite,silent:r.silent,path:r.path,yes:r.yes});(s.length||i.length)&&await dr(n.dependencies,n.devDependencies,t,{silent:r.silent}),n.docs&&a.info(n.docs);}z$1.object({cwd:z$1.string(),yes:z$1.boolean(),defaults:z$1.boolean(),silent:z$1.boolean()});async function vr(e){let t={},r=E__default.resolve(e.cwd);existsSync(r)||(t.MISSING_DIR=true);let o=await k(r);return {errors:t,projectInfo:o}}var Sr=join(homedir(),".mercur"),gt=join(Sr,"config.json"),ht={telemetry_enabled:true,telemetry_email:null,notice_shown:false},yt=class{get(t){return this.read()[t]}set(t,r){let o=this.read();o[t]=r,this.write(o);}read(){try{if(!existsSync(gt))return {...ht};let t=readFileSync(gt,"utf-8"),r=JSON.parse(t);return {...ht,...r}}catch{return {...ht}}}write(t){try{mkdirSync(Sr,{recursive:!0}),writeFileSync(gt,JSON.stringify(t,null,2)+`
|
|
28
|
+
`,{mode:384});}catch{}}},M=new yt;var ue=e=>Function("mm","return import(mm)")(e);function On(){let e=(...t)=>t.some(r=>!!process.env[r]);return e("MEDUSA_CLOUD_ENVIRONMENT_HANDLE","MEDUSA_CLOUD_SANDBOX_HANDLE","MEDUSA_CLOUD_API_KEY")?"medusa-cloud":e("RENDER","RENDER_URL","RENDER_INTERNAL_HOSTNAME","RENDER_SERVICE_ID")?"render":e("FLY_APP_NAME","FLY_REGION","FLY_ALLOC_ID")?"fly-io":e("RAILWAY_STATIC_URL","RAILWAY_ENVIRONMENT_NAME")?"railway":e("DYNO","HEROKU_APP_NAME")?"heroku":e("DO_DEPLOYMENT_ID","DO_APP_NAME","DIGITALOCEAN")?"digitalocean":e("KOYEB","KOYEB_DEPLOYMENT_ID","KOYEB_APP_NAME")?"koyeb":null}async function kr(){try{let e=await ue("os"),t=e.cpus();return {deploymentVendor:On(),systemPlatform:e.platform(),systemRelease:e.release(),systemArchitecture:e.arch(),cpuCount:t.length,cpuModel:t.length?t[0].model:null,cpuSpeed:t.length?t[0].speed:null,memory:e.totalmem(),isWSL:await An(),isDocker:await Ir(),isTTY:typeof process<"u"&&process.stdout?process.stdout.isTTY:null}}catch{return {systemPlatform:null,systemRelease:null,systemArchitecture:null,cpuCount:null,cpuModel:null,cpuSpeed:null,memory:null,isWSL:null,isDocker:null,isTTY:null}}}async function An(){try{if(typeof process>"u"||process?.platform!=="linux")return !1;let e=await ue("fs");return (await ue("os")).release().toLowerCase().includes("microsoft")?!await xr():e.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!await xr():!1}catch{return false}}var Mn=async()=>{try{return (await ue("fs")).statSync("/run/.containerenv"),!0}catch{return false}};async function Ir(){return await Ln()||await Un()}async function Ln(){try{return (await ue("fs")).statSync("/.dockerenv"),!0}catch{return false}}async function Un(){try{return (await ue("fs")).readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return false}}async function xr(){return await Mn()||await Ir()}var wt=e=>createHash("sha256").update(e).digest("base64");var Wn=process.env.MERCUR_TELEMETRY_PROXY_URL||"https://telemetry.mercurjs.com/api/v1/events",Cr=e=>{M.set("telemetry_email",e);},Pr=e=>{M.set("telemetry_enabled",e);},Ke="https://docs.mercurjs.com/telemetry",q=()=>{M.get("notice_shown")||(M.set("notice_shown",true),process.env.MERCUR_DISABLE_TELEMETRY!=="true"&&console.error(["","Mercur collects anonymous usage data to improve the CLI experience.",`You can disable this at any time by running: ${u.info("mercurjs telemetry --disable")}`,`Or by setting ${u.info("MERCUR_DISABLE_TELEMETRY=true")}`,`Learn more: ${u.info(Ke)}`,""].join(`
|
|
29
|
+
`)));},Gn=()=>M.get("telemetry_enabled")&&process.env.MERCUR_DISABLE_TELEMETRY!=="true",_=async(e,t)=>{try{if(!Gn())return;let r=await k(t.cwd),{projectId:o}=Jn(r.packageJson),n={nodeEnv:Vn(),nodeVersion:process.version,mercurVersion:r.mercurVersion,medusaVersion:r.medusaVersion,isSrcDir:r.isSrcDir,aliasPrefix:r.aliasPrefix,config:await v(t.cwd),projectId:o,systemInfo:await kr(),packageManager:await H(t.cwd),email:Hn()};await fetch(Wn,{body:JSON.stringify({...n,...e}),headers:{"Content-Type":"application/json"},method:"post"});}catch{}};function Vn(){return process.env.NODE_ENV||"development"}var Yn=()=>{try{let e=execSync("git config --local --get remote.origin.url",{stdio:"pipe",timeout:1e3});return String(e).trim()}catch{return null}},Jn=e=>{let t=Yn();if(t)return {projectId:wt(t)};let r=process.cwd();return {projectId:wt(r)}},Hn=()=>M.get("telemetry_email")||void 0;var Zn=z$1.object({cwd:z$1.string(),yes:z$1.boolean(),defaults:z$1.boolean(),silent:z$1.boolean()}),_r=new Command().name("init").description("initialize your project and install dependencies").option("-y, --yes","skip confirmation prompt.",true).option("-d, --defaults","use default configuration.",false).option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("-s, --silent","mute output.",false).action(async e=>{try{q();let t=Zn.parse({cwd:E__default.resolve(e.cwd),...e});await bt(t),a.log(`${u.success("Success!")} Project initialization completed.
|
|
30
|
+
You may now add blocks.`),a.break(),await _({type:"init",payload:{outcome:"success"}},{cwd:t.cwd});}catch(t){a.break(),b(t);}finally{S();}});async function bt(e){await vr(e);let t=await v(e.cwd),r=t?await Xn(t,e):await Qn(e);if(!e.yes){let{proceed:s}=await _e({type:"confirm",name:"proceed",message:`Write configuration to ${u.info("blocks.json")}. Proceed?`,initial:true});s||process.exit(0);}let o=w("Writing blocks.json.").start(),n=E__default.resolve(e.cwd,"blocks.json");return r.registries=Object.fromEntries(Object.entries(r.registries||{}).filter(([s])=>!Object.keys(P).includes(s))),await promises.writeFile(n,`${JSON.stringify(r,null,2)}
|
|
31
|
+
`,"utf8"),o.succeed(),await it(e.cwd,r)}async function Qn(e){if(e.defaults)return B.parse({$schema:Oe,aliases:{api:"packages/api/src",vendor:"apps/vendor/src",admin:"apps/admin/src"},registries:P});a.info("");let t=await _e([{type:"text",name:"api",message:`Configure the import alias for ${u.info("api")}:`,initial:"packages/api/src"},{type:"text",name:"vendor",message:`Configure the import alias for ${u.info("vendor")}:`,initial:"apps/vendor/src"},{type:"text",name:"admin",message:`Configure the import alias for ${u.info("admin")}:`,initial:"apps/admin/src"}],{onCancel:()=>{process.exit(0);}});return B.parse({$schema:Oe,aliases:{api:t.api??"packages/api/src",vendor:t.vendor??"apps/vendor/src",admin:t.admin??"apps/admin/src"},registries:P})}async function Xn(e,t){if(t.defaults)return B.parse({$schema:Oe,aliases:{api:"packages/api/src",vendor:"apps/vendor/src",admin:"apps/admin/src"},registries:P});let r=await _e([{type:"text",name:"api",message:`Configure the import alias for ${u.info("api")}:`,initial:e.aliases.api},{type:"text",name:"vendor",message:`Configure the import alias for ${u.info("vendor")}:`,initial:e.aliases.vendor},{type:"text",name:"admin",message:`Configure the import alias for ${u.info("admin")}:`,initial:e.aliases.admin}],{onCancel:()=>{process.exit(0);}});return B.parse({$schema:e.$schema,aliases:{api:r.api??e.aliases.api,vendor:r.vendor??e.aliases.vendor,admin:r.admin??e.aliases.admin}})}var os=z$1.object({blocks:z$1.array(z$1.string()).optional(),yes:z$1.boolean(),overwrite:z$1.boolean(),cwd:z$1.string(),silent:z$1.boolean()}),$r=new Command().name("add").description("add blocks to your project").argument("[blocks...]","names of blocks to add").option("-y, --yes","skip confirmation prompt.",false).option("-o, --overwrite","overwrite existing files.",false).option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("-s, --silent","mute output.",false).action(async(e,t)=>{try{q();let r=os.parse({blocks:e,cwd:E__default.resolve(t.cwd),...t}),o=await v(r.cwd);o||(o=W({resolvedPaths:{cwd:r.cwd}})),r.blocks?.length||(a.error("Please specify at least one item to add."),process.exit(1));let{errors:n}=await qt(r);if(n[C]){let{proceed:s}=await _e({type:"confirm",name:"proceed",message:`You need to create a ${u.info("blocks.json")} file to add items. Proceed?`,initial:!0});s||(a.break(),process.exit(1)),o=await bt({cwd:r.cwd,yes:!0,defaults:!1,silent:r.silent});}if(!o)throw new Error(`Failed to read config at ${u.info(r.cwd)}.`);await br(r.blocks,o,{overwrite:r.overwrite,silent:r.silent,yes:r.yes,path:r.cwd}),await _({type:"add",payload:{outcome:"success",blocks:r.blocks}},{cwd:r.cwd});}catch(r){a.break(),b(r);}finally{S();}});async function jr(e){let t={},r={cwd:e.cwd,registryFile:E__default.resolve(e.cwd,e.registryFile),outputDir:E__default.resolve(e.cwd,e.outputDir)};if(!A.existsSync(r.registryFile))return t[z]=true,{errors:t,resolvePaths:null,config:null};if(!A.existsSync(E__default.resolve(e.cwd,"blocks.json")))return t[C]=true,{errors:t,resolvePaths:null,config:null};await A.mkdir(r.outputDir,{recursive:true});try{let o=await v(e.cwd);return {errors:t,config:o,resolvePaths:r}}catch{a.break(),a.error(`An invalid ${u.info("blocks.json")} file was found at ${u.info(e.cwd)}.
|
|
32
|
+
Before you can build the registry, you must create a valid ${u.info("blocks.json")} file by running the ${u.info("init")} command.`),a.break(),process.exit(1);}}var ss=z$1.object({cwd:z$1.string(),registryFile:z$1.string(),outputDir:z$1.string(),verbose:z$1.boolean().optional().default(false)}),Dr=new Command().name("registry:build").description("builds the registry").argument("[registry]","path to registry.json file","./registry.json").option("-o, --output <path>","destination directory for json files","./r").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("-v, --verbose","verbose output").action(async(e,t)=>{await is({cwd:E.resolve(t.cwd),registryFile:e,outputDir:t.output,verbose:t.verbose});});async function is(e){try{q();let t=ss.parse(e),[{errors:r,resolvePaths:o,config:n},s]=await Promise.all([jr(t),k(t.cwd)]);(r[C]||!s)&&(a.error(`A ${u.info("blocks.json")} file is required to build the registry. Run ${u.info("mercur init")} to create one.`),a.break(),await _({type:"build",payload:{outcome:"missing_config"}},{cwd:t.cwd}),process.exit(1)),(r[z]||!o)&&(a.error(`We could not find a registry file at ${u.info(E.resolve(t.cwd,t.registryFile))}.`),a.break(),await _({type:"build",payload:{outcome:"missing_registry_file"}},{cwd:t.cwd}),process.exit(1));let i=await L.readFile(o.registryFile,"utf-8"),p=K.safeParse(JSON.parse(i));p.success||(a.error(`Invalid registry file found at ${u.info(o.registryFile)}.`),a.break(),process.exit(1));let l=w("Building registry..."),c=await as(p.data,n,s);for(let f of c.items)f.files=f.files?.filter((m,d,h)=>d===h.findIndex(y=>y.path===m.path)),f.dependencies&&(f.dependencies=f.dependencies.filter((m,d,h)=>d===h.findIndex(y=>y===m)));for(let f of c.items){if(!f.files)continue;l.start(`Building ${f.name}...`),f.$schema=Vt;for(let d of f.files){let h=s.isSrcDir?"src":"",y=E.resolve(o.cwd,h,d.path);try{if(!(await L.stat(y)).isFile())continue;d.content=await L.readFile(y,"utf-8");}catch(R){console.error("Error reading file in registry build:",y,R);continue}}let m=$.safeParse(f);if(!m.success){a.error(`Invalid registry item found for ${u.info(f.name)}.`);continue}await L.writeFile(E.resolve(o.outputDir,`${m.data.name}.json`),JSON.stringify(m.data,null,2));}if(await L.copyFile(o.registryFile,E.resolve(o.outputDir,"registry.json")),l.succeed("Building registry."),t.verbose){w(`The registry has ${u.info(c.items.length.toString())} items:`).succeed();for(let f of c.items){a.log(` - ${f.name}`);for(let m of f.files??[])a.log(` - ${m.path}`);}}await _({type:"build",payload:{outcome:"success"}},{cwd:t.cwd});}catch(t){a.break(),b(t);}}async function as(e,t,r){for(let o of e.items)if(o.files?.length)for(let n of o.files){let s=await pt(n.path,t,r);s.files=s.files?.filter(i=>i.path!==n.path),s.files&&o.files.push(...s.files),s.dependencies&&(o.dependencies=o.dependencies?o.dependencies.concat(s.dependencies):s.dependencies);}return e}var Ze=".mercur",oe=/route\.(ts|js)$/;async function xt(e,t={}){let{pathnameFilter:r,ignoreFilter:o,ignorePartFilter:n,sortPathnames:s=true}=t,i=[],p=[e];for(;p.length>0;){let l=await Promise.all(p.map(async c=>{let f={directories:[],pathnames:[]};try{let m=await L__default.readdir(c,{withFileTypes:!0});for(let d of m){if(n&&n(d.name))continue;let h=E__default.join(c,d.name);o&&o(h)||(d.isDirectory()?f.directories.push(h):(!r||r(h))&&f.pathnames.push(h));}}catch(m){if(m.code!=="ENOENT"||c===e)throw m;return null}return f}));p=[];for(let c of l)c&&(p.push(...c.directories),i.push(...c.pathnames));}return s&&i.sort(),i}async function Qe(e){return await L__default.stat(e).catch(()=>null)!==null}async function Xe(e){await Qe(e)||await L__default.mkdir(e,{recursive:true});}var fs="https://raw.githubusercontent.com/mercurjs/mercur/canary/packages/cli/routes-manifest.json",us=5e3;function ds(e){let t=ls.createHash("sha256").update(e).digest("hex").slice(0,16);return E__default.join(ps.tmpdir(),`mercur-routes-manifest-${t}.json`)}async function et(){let e=process.env.MERCUR_ROUTES_MANIFEST_URL??fs,t=ds(e);try{let r=new AbortController,o=setTimeout(()=>r.abort(),us),n=await fetch(e,{signal:r.signal});if(clearTimeout(o),!n.ok)throw new Error(`Request failed with status ${n.status}`);let s=await n.json();return await L__default.writeFile(t,JSON.stringify(s),"utf-8").catch(()=>{}),s}catch{try{return JSON.parse(await L__default.readFile(t,"utf-8"))}catch{throw new Error(`Failed to fetch the routes manifest from ${e} and no cached copy is available. Connect to the network and re-run codegen.`)}}}function ge(e){return e.replace(/\\/g,"/")}function Pe(e){return e.split("/").reduce((r,o)=>{if(!o||oe.test(o))return r;if(o.startsWith("[")&&o.endsWith("]")){let n=o.slice(1,-1);return `${r}/:${n}`}return `${r}/${o}`},"")||"/"}async function kt(e){return await Qe(e)?(await xt(e,{pathnameFilter:o=>oe.test(o),ignorePartFilter:o=>o.startsWith("_")||o==="node_modules"})).map(o=>{let n=E__default.relative(e,o);return {filePath:ge(n),route:Pe(ge(n))}}):[]}function It(e){return e.replace(/[-_]+(.)?/g,(t,r)=>r?r.toUpperCase():"").replace(/^[A-Z]/,t=>t.toLowerCase())}function hs(e){return `../src/api/${e.replace(/\.ts$/,"")}`}function ys(e){return e.startsWith(":")?`$${It(e.slice(1))}`:It(e)}function Nr(){return {children:new Map}}function ws(e){let t=Nr();for(let[r,o]of e){let n=r.split("/").filter(Boolean),s=t;for(let i of n){let p=ys(i);s.children.has(p)||s.children.set(p,Nr()),s=s.children.get(p);}s.importType=o;}return t}function Ar(e,t=" "){let r=[];if(e.importType&&r.push(e.importType),e.children.size>0){let o=[];for(let[n,s]of e.children){let i=Ar(s,t+" ");o.push(`${t} ${n}: ${i}`);}r.push(`{
|
|
33
33
|
${o.join(`;
|
|
34
34
|
`)};
|
|
35
|
-
${t}}`);}return r.length===0?"{}":r.length===1?r[0]:r.join(" & ")}function Mr(e,t){let
|
|
35
|
+
${t}}`);}return r.length===0?"{}":r.length===1?r[0]:r.join(" & ")}function Mr(e,t,r){let o=new Map;for(let[p,l]of Object.entries(t))o.set(p,l);let n=r??hs;for(let p of e){let l=n(p.filePath);o.set(p.route,`typeof import("${l}")`);}let s=ws(o);return `// This file is generated automatically by Mercur CLI
|
|
36
36
|
// Do not edit this file manually
|
|
37
37
|
|
|
38
|
-
export type Routes = ${Ar(
|
|
39
|
-
`}async function Lr(e){let t=
|
|
40
|
-
Before you can run registry:codegen, you must create a valid ${
|
|
38
|
+
export type Routes = ${Ar(s,"")};
|
|
39
|
+
`}async function Lr(e){let t=E__default.join(e,Ze,"routes.d.ts"),r=E__default.join(e,"src","api"),o=E__default.dirname(t);await Xe(o);let n=await et(),s=await kt(r),i=Mr(s,n);await L__default.writeFile(t,i,"utf-8");}async function Ur(e,t){let r=E__default.join(e,Ze,"index.d.ts"),o=E__default.dirname(r);await Xe(o);let n=t.map(l=>{let c=l.indexOf("/api/"),f=c!==-1?l.slice(c+5):l;return {filePath:l,route:Pe(ge(f))}}),s=l=>`../src/${l.replace(/\.ts$/,"")}`,i=await et(),p=Mr(n,i,s);await L__default.writeFile(r,p,"utf-8");}async function Wr(e){let t={},r={cwd:e.cwd,registryFile:E__default.resolve(e.cwd,e.registryFile)};if(!A.existsSync(r.registryFile))return t[z]=true,{errors:t,resolvePaths:null,config:null};if(!A.existsSync(E__default.resolve(e.cwd,"blocks.json")))return t[C]=true,{errors:t,resolvePaths:null,config:null};try{let o=await v(e.cwd);return {errors:t,config:o,resolvePaths:r}}catch{a.break(),a.error(`An invalid ${u.info("blocks.json")} file was found at ${u.info(e.cwd)}.
|
|
40
|
+
Before you can run registry:codegen, you must create a valid ${u.info("blocks.json")} file by running the ${u.info("init")} command.`),a.break(),process.exit(1);}}var bs=z$1.object({cwd:z$1.string(),registryFile:z$1.string()}),Vr=new Command().name("registry:codegen").description("generate type definitions for registry block API routes").argument("[registry]","path to registry.json file","./registry.json").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async(e,t)=>{await vs({cwd:E.resolve(t.cwd),registryFile:e});});async function vs(e){try{let t=bs.parse(e),{errors:r,resolvePaths:o}=await Wr(t);r[C]&&(a.error(`A ${u.info("blocks.json")} file is required to run registry:codegen. Run ${u.info("mercur init")} to create one.`),a.break(),process.exit(1)),(r[z]||!o)&&(a.error(`Could not find a registry file at ${u.info(E.resolve(t.cwd,t.registryFile))}.`),a.break(),process.exit(1));let n=await L.readFile(o.registryFile,"utf-8"),s=K.safeParse(JSON.parse(n));s.success||(a.error(`Invalid registry file at ${u.info(o.registryFile)}.`),a.break(),process.exit(1));let i=[];for(let l of s.data.items)if(l.files)for(let c of l.files)c.type==="registry:api"&&oe.test(c.path)&&i.push(c.path);if(i.length===0){a.warn("No API route files found in registry.");return}let p=w("Generating registry route types...");await Ur(t.cwd,i),p.succeed("Registry route types generated successfully."),a.break();}catch(t){a.break(),b(t);}}var Ss=z$1.object({cwd:z$1.string()}),Hr=new Command().name("codegen").description("generate type definitions for API routes").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async e=>{await xs({cwd:E.resolve(e.cwd)});});async function xs(e){try{let t=Ss.parse(e),r=w("Generating route types...");await Lr(t.cwd),r.succeed("Route types generated successfully."),a.break();}catch(t){a.break(),b(t);}}var _t=({contents:e,databaseUri:t})=>{let r=new Set,o=e;return e.includes("DATABASE_URL")||(o+=`
|
|
41
41
|
DATABASE_URL=your-connection-string-here`),o.split(`
|
|
42
|
-
`).map(s=>{if(s.startsWith("#")||!s.includes("="))return s;let[
|
|
43
|
-
`)},
|
|
42
|
+
`).map(s=>{if(s.startsWith("#")||!s.includes("="))return s;let[i]=s.split("=");if(i)return i==="DATABASE_URL"&&(s=`DATABASE_URL=${t||"postgresql://localhost:5432/your-database-name"}`),r.has(i)?null:(r.add(i),s)}).filter(Boolean).join(`
|
|
43
|
+
`)},ks=[{path:"packages/api"},{path:"apps/vendor"},{path:"apps/admin"}];async function tt({projectDir:e,databaseUri:t}){try{await Promise.all(ks.map(async({path:r})=>{let o=E__default.join(e,r);if(!A.existsSync(o))return;let n=E__default.join(o,".env.template"),s=E__default.join(o,".env");if(!r.includes("api")){A.existsSync(n)&&!A.existsSync(s)&&await A.copy(n,s);return}let p="";if(A.existsSync(n)){let l=await A.readFile(n,"utf8");p=_t({contents:l,databaseUri:t});}if(A.existsSync(s)){let l=await A.readFile(s,"utf8"),c=_t({contents:l,databaseUri:t});await A.writeFile(s,c);}else {let l=_t({contents:p,databaseUri:t});await A.writeFile(s,l);}}));}catch(r){a.error("Unable to manage environment files"),r instanceof Error&&a.error(r.message),process.exit(1);}}var Cs="localhost",Zr=5432,Dt="packages/api",Ps="admin@mercur-test.com";async function Qr(e){let t=e.projectName.replace(/[^a-zA-Z0-9]/g,"-"),{client:r,dbConnectionString:o}=await Ts({dbConnectionString:e.dbConnectionString,dbHost:e.dbHost??Cs,dbPort:e.dbPort??Zr,dbName:t,spinner:e.spinner});if(!r||!o)return {success:false,dbName:t,connectionString:null};try{return e.spinner&&(e.spinner.text="Checking if database exists..."),await _s(r,t)?(await r.end(),qr({...e,dbName:t,connectionString:o,alreadyExists:!0})):(e.spinner&&(e.spinner.text=`Creating database "${t}"...`),await r.query(`CREATE DATABASE "${t}"`),await r.end(),qr({...e,dbName:t,connectionString:o,alreadyExists:!1}))}catch(n){return a.error(`Error creating database${n instanceof Error?`: ${n.message}`:""}.`),await r.end().catch(()=>{}),{success:false,dbName:t,connectionString:null}}}async function qr(e){let{projectDir:t,spinner:r,dbName:o,connectionString:n,alreadyExists:s}=e;if(await tt({projectDir:t,databaseUri:n}),!await $s({projectDir:t,spinner:r}))return {success:false,dbName:o,connectionString:null};if(!await Ds({projectDir:t,spinner:r}))return {success:false,dbName:o,connectionString:null};let l=await js({projectDir:t});return {success:true,dbName:o,connectionString:n,alreadyExists:s,inviteToken:l}}async function Ts({dbConnectionString:e,dbHost:t,dbPort:r,dbName:o,spinner:n}){if(e)try{let i=new $t.Client({connectionString:e});return await i.connect(),{client:i,dbConnectionString:e}}catch(i){return a.error(`Invalid database connection string${i instanceof Error?`: ${i.message}`:""}.`),{client:null,dbConnectionString:null}}n&&(n.text=`Trying default connection (postgres@${t}:${r})...`);try{let i=new $t.Client({user:"postgres",password:"",host:t,port:r,database:"postgres",connectionTimeoutMillis:5e3});return await i.connect(),{client:i,dbConnectionString:Kr({user:"postgres",password:"",host:t,port:r,db:o})}}catch{}n?.stop(),a.break(),a.log(`PostgreSQL is required. Make sure it is installed and running on ${t}:${r}.`),a.break();let s=3;for(let i=1;i<=s;i++){let p=i>1?` (attempt ${i}/${s})`:"",l=await _e([{type:"text",name:"postgresUsername",message:`Enter your Postgres username${p}`,initial:"postgres"},{type:"password",name:"postgresPassword",message:'Enter your Postgres password (press Enter for "postgres")'}]);if(!l.postgresUsername)return {client:null,dbConnectionString:null};let c=l.postgresUsername,f=l.postgresPassword||"postgres";n?.start("Connecting to database...");try{let m=new $t.Client({user:c,password:f,host:t,port:r,database:"postgres",connectionTimeoutMillis:5e3});return await m.connect(),{client:m,dbConnectionString:Kr({user:c,password:f,host:t,port:r,db:o})}}catch(m){n?.stop();let d=m instanceof Error?m.message:String(m);i<s?a.warn(`Attempt ${i}/${s} failed: ${d}`):a.error(`Couldn't connect to PostgreSQL: ${d}
|
|
44
44
|
\u2192 Is PostgreSQL running? Try: pg_isready -h ${t} -p ${r}
|
|
45
|
-
\u2192 Check your username, password, and that the server is accessible.`);}}return {client:null,dbConnectionString:null}}async function
|
|
45
|
+
\u2192 Check your username, password, and that the server is accessible.`);}}return {client:null,dbConnectionString:null}}async function _s(e,t){return ((await e.query(`SELECT datname FROM pg_catalog.pg_database WHERE datname='${t}';`)).rowCount??0)>0}function Kr({user:e,password:t,host:r,port:o=Zr,db:n}){let s=encodeURIComponent(t);return `postgresql://${e}:${s}@${r}:${o}/${n}`}async function $s({projectDir:e,spinner:t}){let r=E__default.join(e,Dt),o=await H(r),n=t||w("Running migrations...").start(),s=o==="yarn"?["yarn","run","build"]:o==="pnpm"?["pnpm","run","build"]:o==="bun"?["bun","run","build"]:["npm","run","build"],i=o==="yarn"?["yarn"]:o==="pnpm"?["pnpm","exec"]:o==="bun"?["bunx"]:["npx"];try{return n.text="Building project...",await execa(s[0],s.slice(1),{cwd:r}),n.text="Running database migrations...",await execa(i[0],[...i.slice(1),"medusa","db:migrate"],{cwd:r}),t||n.succeed("Migrations completed successfully."),!0}catch(p){return n.fail("Failed to run migrations."),a.error(`Error running migrations${p instanceof Error?`: ${p.message}`:""}.`),false}}async function js({projectDir:e}){let t=E__default.join(e,Dt),r=await H(t),o=r==="yarn"?["yarn"]:r==="pnpm"?["pnpm","exec"]:r==="bun"?["bunx"]:["npx"];try{return (await execa(o[0],[...o.slice(1),"medusa","user","-e",Ps,"--invite"],{cwd:t})).stdout.match(/Invite token: (?<token>.+)/)?.groups?.token||null}catch(n){return a.error(`Error creating admin invite${n instanceof Error?`: ${n.message}`:""}.`),null}}async function Ds({projectDir:e,spinner:t}){let r=E__default.join(e,Dt),o=await H(r),n=t||w("Seeding database...").start();try{let s=o==="yarn"?["yarn","seed"]:o==="pnpm"?["pnpm","run","seed"]:o==="bun"?["bun","run","seed"]:["npm","run","seed"];return n.text="Seeding database with demo data...",await execa(s[0],s.slice(1),{cwd:r}),t||n.succeed("Database seeded successfully."),!0}catch(s){return n.fail("Failed to seed database."),a.error(`Error seeding database${s instanceof Error?`: ${s.message}`:""}.`),false}}var Xr=Ne.version?.includes("-canary")?"canary":"main",Ft=20,to={basic:{path:"basic",description:"Full marketplace starter \u2014 sellers, products, orders, admin & vendor panels"},plugin:{path:"plugin",description:"MedusaJS plugin template \u2014 for building reusable marketplace extensions"}},ro=new Command().name("create").description("create a new Mercur project").argument("[name]","the name of your project").option("-t, --template <template>","the template to use. e.g. basic, registry, or plugin").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("--no-deps","skip installing dependencies.").option("--skip-db","skip database configuration.",false).option("--skip-email","skip email prompt.",false).option("--db-connection-string <string>","PostgreSQL connection string.").option("--db-host <host>","PostgreSQL host.","localhost").option("--db-port <port>","PostgreSQL port.","5432").action(async(e,t)=>{try{let r=Date.now();Zs(),q();let o=e;if(!o){let{enteredName:m}=await _e({type:"text",name:"enteredName",message:"What is your project named?",initial:t.template?`${t.template}-app`:"my-mercur",format:d=>d.trim(),validate:d=>zs(E__default.basename(E__default.resolve(d))).validForNewPackages?!0:"Invalid project name. Name should be lowercase, URL-friendly, and not start with a period or underscore."});m||process.exit(0),o=m;}let n=t.template;if(!n){let{selectedTemplate:m}=await _e({type:"select",name:"selectedTemplate",message:`Which ${u.info("template")} would you like to use?`,choices:Object.entries(to).map(([d,h])=>({title:d,value:d,description:h.description}))});m||process.exit(0),n=m;}if(!t.skipEmail){let{wantsEmail:m}=await _e({type:"confirm",name:"wantsEmail",message:"Mind sharing your email? We reach out for priority support, community events, and invite-only meetups. We never spam.",initial:!1});if(m){let{email:d}=await _e({type:"text",name:"email",message:"Enter your email:",format:h=>h.trim()});d&&Cr(d);}}let s=E__default.resolve(t.cwd,o);await Ws(s);let i=w("Downloading template...").start();await Gs({projectDir:s,template:n}),i.succeed("Template downloaded successfully.");let p=await ur();if(await Hs(s,p),!t.deps)w("Dependency installation skipped.").warn();else {let m=w("Installing dependencies...").start(),d=Date.now(),h=await Ys({projectDir:s,packageManager:p}),y=((Date.now()-d)/1e3).toFixed(1);h?m.succeed(`Dependencies installed successfully in ${y}s.`):(m.fail("Failed to install dependencies"),await _({type:"create",payload:{outcome:"dependency_installation_failed",packageManager:p}},{cwd:s}),process.exit(1));}let l=t.dbConnectionString,c;if(t.skipDb)w("Database setup skipped.").warn();else {let m=w("Setting up database...").start();c=await Qr({projectDir:s,projectName:o,dbConnectionString:l,dbHost:t.dbHost,dbPort:parseInt(t.dbPort,10),spinner:m}),c.success?(c.alreadyExists?m.warn(`Database ${u.info(c.dbName)} already exists. Skipping database creation.`):m.succeed(`Database ${u.info(c.dbName)} setup successfully.`),l=c.connectionString):(m.fail("Failed to setup database."),a.log(Nt()),await _({type:"create",payload:{outcome:"database_setup_failed"}},{cwd:s}),process.exit(1));}await tt({projectDir:s,databaseUri:l}),await qs(s),await _({type:"create",payload:{outcome:"created"}},{cwd:s});let f=((Date.now()-r)/1e3).toFixed(1);if(w(`Mercur project successfully created! (${f}s)`).succeed(),c?.success){w("Starting development server...").info();let m=c.inviteToken?`http://localhost:9000/dashboard/invite?token=${c.inviteToken}&first_run=true`:"http://localhost:9000/dashboard",y=spawn(p==="npm"?"npm":p,p==="npm"?["run","dev"]:["dev"],{cwd:s,stdio:"inherit",env:process.env}),R=()=>{a.break(),a.log(F.bgGreen(F.black(" Project stopped. To start again: "))),a.log(eo(s,p)),a.log(Nt()),a.break();};process.on("SIGINT",()=>{}),y.on("close",()=>{R(),process.exit(0);}),Bs({resources:["http://localhost:9000/health"],timeout:6e4}).then(async()=>{a.break(),a.log(Js());try{await Ms(m),w("Admin panel opened in your browser.").succeed();}catch{w("Open this URL in your browser to create your admin account:").info(),a.log(u.info(m));}}).catch(()=>{w("To create your admin account, visit:").info(),a.log(u.info(m));});}else a.log(F.bgGreen(F.black(" Next Steps "))),a.log(eo(s,p)),a.log(Nt()),a.break();}catch(r){a.break(),b(r);}finally{S();}});async function Ws(e){if(!await A.pathExists(e)){await A.mkdir(e);return}let o=(await A.readdir(e)).filter(n=>!n.startsWith("."));if(o.length>0){let{proceed:n}=await _e({type:"confirm",name:"proceed",message:`Directory ${u.info(E__default.basename(e))} already exists and contains ${o.length} file(s). Continue and overwrite?`,initial:false});n||process.exit(0);}}async function Gs({projectDir:e,template:t}){let r=`https://codeload.github.com/mercurjs/mercur/tar.gz/${Xr}`,o=to[t].path,n=`mercur-${Xr.replace(/^v/,"").replaceAll("/","-")}/templates/${o}/`;await pipeline(await Vs(r),x$1({cwd:e,filter:s=>s.includes(n),strip:2+o.split("/").length}));}async function Vs(e){let t=await fetch(e);if(!t.body)throw new Error(`Failed to download: ${e}`);return Readable.from(t.body)}async function Ys({projectDir:e,packageManager:t}){let r="npm",o=["install"];t==="yarn"?(r="yarn",o=[]):t==="pnpm"?(r="pnpm",o=["install"]):t==="bun"&&(r="bun",o=["install"]);try{return await execa(r,o,{cwd:E__default.resolve(e),stdin:"inherit",stdout:"inherit",stderr:"inherit",env:{...process.env,npm_config_yes:"true"}}),!0}catch(n){return a.error(`Error installing dependencies${n instanceof Error?`: ${n.message}`:""}.`),false}}function eo(e,t){let r=E__default.relative(process.cwd(),e),o=n=>F.bold(n);return `
|
|
46
46
|
${o("Launch Application:")}
|
|
47
47
|
|
|
48
48
|
- cd ./${r}
|
|
@@ -51,23 +51,23 @@ ${o("Launch Application:")}
|
|
|
51
51
|
${o("Create your first seller:")}
|
|
52
52
|
|
|
53
53
|
Once the server is running, open the Vendor Panel and register at:
|
|
54
|
-
${
|
|
54
|
+
${u.info("http://localhost:9000/seller/register")}
|
|
55
55
|
|
|
56
56
|
${o("Documentation:")}
|
|
57
57
|
|
|
58
|
-
- ${
|
|
59
|
-
`}function
|
|
58
|
+
- ${Ot("Getting Started","https://docs.mercurjs.com/welcome")}
|
|
59
|
+
`}function Js(){let e=t=>F.bold(t);return `
|
|
60
60
|
${e("Your marketplace is running:")}
|
|
61
61
|
|
|
62
|
-
API: ${
|
|
63
|
-
Admin Panel: ${
|
|
64
|
-
Vendor Panel: ${
|
|
62
|
+
API: ${u.info("http://localhost:9000")}
|
|
63
|
+
Admin Panel: ${u.info("http://localhost:9000/dashboard")}
|
|
64
|
+
Vendor Panel: ${u.info("http://localhost:9000/seller")}
|
|
65
65
|
|
|
66
66
|
${e("Create your first seller:")}
|
|
67
67
|
|
|
68
68
|
Open the Vendor Panel and register a new account at:
|
|
69
|
-
${
|
|
70
|
-
`}function Nt(){return `${
|
|
71
|
-
${
|
|
72
|
-
File: ${
|
|
69
|
+
${u.info("http://localhost:9000/seller/register")}
|
|
70
|
+
`}function Nt(){return `${F.bgCyan(F.black(" Have feedback? "))} Visit us on ${Ot("GitHub","https://github.com/mercurjs/mercur")}.
|
|
71
|
+
${F.bgMagenta(F.black(" Join the community! "))} Chat with us on ${Ot("Discord","https://discord.gg/hnZBzc4NJU")}.`}function Ot(e,t){return Us(e,t,{fallback:(r,o)=>`${r}: ${F.cyan().underline(o)}`})}async function Hs(e,t){let r=E__default.join(e,"package.json"),o=await A.readJSON(r);try{let{stdout:n}=await execa(t,["--version"]);o.packageManager=`${t}@${n.trim()}`;}catch{o.packageManager=t;}await A.writeJSON(r,o,{spaces:2});}async function qs(e){try{await execa("git",["init"],{cwd:e}),a.info("Initialized a git repository.");}catch{throw new Error("Failed to initialize git repository.")}}function Ks(){let[e]=process.versions.node.split(".").map(Number);return e}function Zs(){let e=Ks();if(e<Ft)throw new Error(`Mercur requires at least v${Ft} of Node.js. You're using v${e}. Please install at least v${Ft} and try again: https://nodejs.org/en/download`)}async function oo(e,t){let{config:r}=t||{};if(Y(e)){let[i]=await te([e]);try{return K.parse(i)}catch(p){throw new T(e,p)}}if(!e.startsWith("@"))throw new ze(e);let o=e;o.endsWith("/registry")||(o=`${o}/registry`);let n=ve(o,le(r));if(!n?.url)throw new ae(o);let[s]=await te([n.url]);try{return K.parse(s)}catch(i){throw new T(o,i)}}async function ot(e,t){let{config:r}=t||{};return S(),Je(e,le(r))}var oi=z$1.object({blocks:z$1.array(z$1.string()).optional(),cwd:z$1.string()}),no=new Command().name("diff").description("check for updates against the registry").argument("[blocks...]","the block names to diff").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async(e,t)=>{try{let r=oi.parse({blocks:e,cwd:E__default.resolve(t.cwd),type:t.type}),o=await v(r.cwd);o||(o=W({resolvedPaths:{cwd:r.cwd}})),r.blocks?.length||(a.error("Please specify at least one block to diff."),process.exit(1));let n=await ot(r.blocks,{config:o}),s=r.blocks.filter(p=>!n.some(l=>l.name===p));s.length>0&&(a.error(`Blocks ${s.join(", ")} not found in registry.`),process.exit(1));let i=await k(o.resolvedPaths.cwd);for(let p of n)for(let l of p.files){let c=He(l,o,{isSrcDir:i?.isSrcDir??!1,path:r.cwd});if(!existsSync(c)){a.info(`File ${c} does not exist locally.`);continue}let f=await promises.readFile(c,"utf-8"),m=await qe({filename:l.path,raw:l.content,config:o,isRemote:!1}),d=diffLines(f,m);d.length>1&&(a.info(`
|
|
72
|
+
File: ${u.info(l.path)}`),ni(d));}}catch(r){b(r);}finally{S();}});function ni(e){for(let t of e)t&&(t.added?process.stdout.write(u.success(t.value)):t.removed?process.stdout.write(u.error(t.value)):process.stdout.write(t.value));}var so=new Command().name("info").description("get information about your project").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async e=>{try{a.info("> project info"),console.log(await k(e.cwd)),a.break(),a.info("> blocks.json"),console.log(await v(e.cwd));}catch(t){b(t);}});var ci=z$1.object({cwd:z$1.string(),query:z$1.string().optional(),registry:z$1.string().optional()}),io=new Command().name("search").description("search blocks from registries").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).option("-q, --query <query>","query string").option("-r, --registry <registry>","the registry to search from (default: @mercurjs)","@mercurjs").action(async e=>{try{let t=ci.parse({cwd:E__default.resolve(e.cwd),query:e.query,type:e.type,registry:e.registry}),r=await v(t.cwd);r||(r=W({resolvedPaths:{cwd:t.cwd}}));let n=(await oo(t.registry??"@mercurjs",{config:r})).items;if(t.query){let s=t.query.toLowerCase();n=n.filter(i=>i.name.toLowerCase().includes(s)||i.description?.toLowerCase().includes(s));}console.log(JSON.stringify(n,null,2)),process.exit(0);}catch(t){b(t);}finally{S();}});var ao=new Command().name("telemetry").description("manage the collection of anonymous usage data").option("--enable","enable telemetry").option("--disable","disable telemetry").action(async e=>{try{if(e.enable&&e.disable){a.error("Cannot use --enable and --disable together.");return}if(!e.enable&&!e.disable){let r=M.get("telemetry_enabled"),o=process.env.MERCUR_DISABLE_TELEMETRY==="true",n=r&&!o,s=n?"enabled":"disabled";a.log(`Telemetry is currently ${s}.`),o&&r&&a.log("(Disabled via MERCUR_DISABLE_TELEMETRY environment variable)"),a.log(n?'Run "mercurjs telemetry --disable" to opt out.':'Run "mercurjs telemetry --enable" to opt in.'),a.log(`Learn more: ${Ke}`);return}let t=!!e.enable;Pr(t),t?a.success(`Telemetry enabled. Learn more: ${Ke}`):a.success("Telemetry disabled. No data will be collected.");}catch(t){b(t);}});var fi=z$1.object({cwd:z$1.string()}),lo=new Command().name("view").description("view block details from the registry").argument("<blocks...>","the block names to view").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async(e,t)=>{try{let r=fi.parse({cwd:E__default.resolve(t.cwd),type:t.type}),o=await v(r.cwd);o||(o=W({resolvedPaths:{cwd:r.cwd}}));let n=await ot(e,{config:o});console.log(JSON.stringify(n,null,2)),process.exit(0);}catch(r){b(r);}finally{S();}});async function mo(e){let t=E__default.resolve(e.root,"src/vendor");if(!Mt.existsSync(t))return true;let r=await import('vite'),o=(await import('@vitejs/plugin-react')).default,n=JSON.parse(readFileSync(E__default.resolve(e.root,"package.json"),"utf-8")),s=new Set([...Object.keys(n.dependencies||{}),...Object.keys(n.peerDependencies||{}),...Object.keys(n.devDependencies||{}),"react","react/jsx-runtime","react-router-dom","react-i18next","@medusajs/js-sdk","@medusajs/admin-sdk","@mercurjs/client","@tanstack/react-query"]),i=E__default.resolve(e.outDir,"src/vendor"),p=E__default.resolve(e.root,"src/vendor/__vendor-extensions__.js");try{let l=generatePluginEntryModule(t);await writeFile(p,l,"utf-8");let c=process.env.NODE_ENV;process.env.NODE_ENV="production",await r.build({build:{lib:{entry:p,formats:["es","cjs"],fileName:"index"},emptyOutDir:!1,minify:!1,outDir:i,rollupOptions:{external:(d,h)=>{let y=d.split("/"),R=y[0]?.startsWith("@")?`${y[0]}/${y[1]}`:y[0],I=[...builtinModules,...builtinModules.map(N=>`node:${N}`)];return h?!!(R&&s.has(R)):!!(R&&s.has(R)||R&&I.includes(R))},output:{preserveModules:!1,interop:"auto",chunkFileNames:()=>"_chunks/[name]-[hash]"}}},plugins:[o()],logLevel:"silent",clearScreen:!1}),process.env.NODE_ENV=c;let f=E__default.join(i,"index.es.js"),m=E__default.join(i,"index.mjs");return Mt.existsSync(f)&&Mt.renameSync(f,m),!0}catch(l){return console.error(l),false}finally{try{await rm(p,{force:!0});}catch{}}}var uo=new Command().name("plugin:build").description("build a Medusa plugin").option("-c, --cwd <cwd>","the working directory. defaults to the current directory.",process.cwd()).action(async e=>{try{let t=E__default.resolve(e.cwd),r=w("Building plugin..."),{Compiler:o}=await import('@medusajs/framework/build-tools'),n=new o(t,a),s=await n.loadTSConfigFile();s||(r.fail("Unable to compile plugin \u2014 tsconfig not found."),process.exit(1));let i=await import('@medusajs/admin-bundler'),p=E__default.resolve(t,".medusa/server");(await Promise.all([n.buildPluginBackend(s),n.buildPluginAdminExtensions(i),mo({root:t,outDir:p})])).every(c=>c===!0)?r.succeed("Plugin built successfully."):(r.fail("Plugin build failed."),process.exit(1));}catch(t){a.break(),b(t);}});process.on("SIGINT",()=>process.exit(0));process.on("SIGTERM",()=>process.exit(0));async function Ri(){let e=new Command().name("@mercurjs/cli").description("Add blocks from registries to your project").version(Ne.version,"-v, --version","display the version number");e.addCommand($r).addCommand(Dr).addCommand(Vr).addCommand(Hr).addCommand(ro).addCommand(no).addCommand(so).addCommand(_r).addCommand(io).addCommand(ao).addCommand(lo).addCommand(uo),e.parse();}Ri();export{Ro as registryConfigItemSchema,Gt as registryConfigSchema,xi as registryIndexSchema,zt as registryItemFileSchema,$ as registryItemSchema,wo as registryItemTypeSchema,Wt as registryResolvedItemsTreeSchema,K as registrySchema};//# sourceMappingURL=index.js.map
|
|
73
73
|
//# sourceMappingURL=index.js.map
|