jiek 0.2.1 → 0.2.2-alpha.1
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/bin/jiek.js +8 -1
- package/dist/base.esm.d.ts +55 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.esm.d.ts +2 -0
- package/dist/cli.esm.js +10 -0
- package/dist/cli.esm.js.map +1 -0
- package/dist/cli.esm.min.js +2 -0
- package/dist/cli.esm.min.js.map +1 -0
- package/dist/cli.iife.js +658 -0
- package/dist/cli.iife.js.map +1 -0
- package/dist/cli.iife.min.js +2 -0
- package/dist/cli.iife.min.js.map +1 -0
- package/dist/cli.umd.js +661 -0
- package/dist/cli.umd.js.map +1 -0
- package/dist/cli.umd.min.js +2 -0
- package/dist/cli.umd.min.js.map +1 -0
- package/dist/commands/build.esm.js +3 -4
- package/dist/commands/build.esm.js.map +1 -1
- package/dist/commands/build.esm.min.js +1 -1
- package/dist/commands/build.esm.min.js.map +1 -1
- package/dist/commands/init.esm.js +271 -0
- package/dist/commands/init.esm.js.map +1 -0
- package/dist/commands/init.esm.min.js +2 -0
- package/dist/commands/init.esm.min.js.map +1 -0
- package/dist/index.d.ts +56 -1
- package/dist/index.esm.d.ts +5 -1
- package/dist/index.esm.js +2 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.iife.js +6 -289
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/index.umd.js +6 -291
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/utils/filterSupport.esm.js +4 -15
- package/dist/utils/filterSupport.esm.js.map +1 -1
- package/dist/utils/filterSupport.esm.min.js +1 -1
- package/dist/utils/filterSupport.esm.min.js.map +1 -1
- package/dist/utils/getRoot.esm.js +14 -0
- package/dist/utils/getRoot.esm.js.map +1 -0
- package/dist/utils/getRoot.esm.min.js +2 -0
- package/dist/utils/getRoot.esm.min.js.map +1 -0
- package/dist/utils/getWD.esm.js +25 -0
- package/dist/utils/getWD.esm.js.map +1 -0
- package/dist/utils/getWD.esm.min.js +2 -0
- package/dist/utils/getWD.esm.min.js.map +1 -0
- package/dist/utils/loadConfig.esm.js +75 -0
- package/dist/utils/loadConfig.esm.js.map +1 -0
- package/dist/utils/loadConfig.esm.min.js +2 -0
- package/dist/utils/loadConfig.esm.min.js.map +1 -0
- package/dist/utils/tsRegister.esm.js +24 -0
- package/dist/utils/tsRegister.esm.js.map +1 -0
- package/dist/utils/tsRegister.esm.min.js +2 -0
- package/dist/utils/tsRegister.esm.min.js.map +1 -0
- package/package.json +14 -4
- package/bin/jiek-dev.js +0 -4
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"init.esm.js","sources":["../../src/commands/init.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { program } from 'commander'\nimport detectIndent from 'detect-indent'\nimport inquirer from 'inquirer'\nimport { applyEdits, modify } from 'jsonc-parser'\nimport { isMatch } from 'micromatch'\n\nimport type { Config, InitNamed } from '../base'\nimport { getWD } from '../utils/getWD'\nimport { loadConfig } from '../utils/loadConfig'\n\nconst PACKAGE_JSON_TEMPLATE = `{\n  \"name\": \"\",\n  \"version\": \"0.0.1\",\n  \"description\": \"\",\n  \"license\": \"\",\n  \"author\": \"\",\n  \"files\": [\"dist\"],\n  \"exports\": {\n    \".\": \"./src/index.ts\"\n  },\n  \"scripts\": {\n  },\n  \"homepage\": \"\",\n  \"repository\": \"\",\n  \"bugs\": \"\"\n}`.trimStart()\nconst README_TEMPLATE = `# $name\n\n## Installation\n\n\\`\\`\\`bash\nnpm install $name\n# or\npnpm install $name\n# or\nyarn add $name\n\\`\\`\\`\n\n## Usage\n\n\n## License\n\n$license\n`.trimStart()\n\nfunction getTemplateStr(wd: string, template: string | undefined) {\n  let templateString = template ?? PACKAGE_JSON_TEMPLATE\n  let isTemplateFile = false\n  try {\n    if (template) JSON.parse(template)\n  } catch (e) {\n    isTemplateFile = true\n  }\n  if (isTemplateFile) {\n    const templatePath = path.resolve(wd, template!)\n    templateString = fs.readFileSync(templatePath, 'utf-8')\n  }\n  return templateString\n}\nconst wdCache = new Map<string, Record<string, any>>()\nfunction getWDPackageJSONFiled(wd: string, field: string) {\n  if (wdCache.has(wd)) {\n    return wdCache.get(wd)![field]\n  }\n  const packageJSONPath = path.resolve(wd, 'package.json')\n  const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, 'utf-8'))\n  wdCache.set(wd, packageJSON)\n  return packageJSON[field]\n}\nasync function getName(\n  named: InitNamed | undefined,\n  name: string,\n  {\n    wd, cwd,\n    workspaceName\n  }: {\n    wd: string\n    cwd: string\n    workspaceName: string\n  }\n): Promise<[name?: string, path?: string]> {\n  const relativePath = cwd.replace(`${wd}/`, '')\n  let basename = path.basename(cwd)\n\n  if (typeof named === 'function') {\n    return named(name, {\n      full: wd,\n      relative: cwd\n    })\n  }\n\n  let isParentMatched = false\n  let matchedKey: string | undefined\n  let matchedRule: NonNullable<typeof named>[string] | undefined\n  if (typeof named === 'object') {\n    const isWD = cwd === wd\n    if (isWD) {\n      const { rule } = await inquirer.prompt<{ rule: string }>({\n        type: 'list',\n        name: 'rule',\n        message: 'choose a rule',\n        default: 'default',\n        choices: ['default'].concat(Object.keys(named))\n      })\n      if (rule !== 'default') {\n        matchedKey = rule\n        matchedRule = named[rule]\n      }\n    } else for (const [key, value] of Object.entries(named)) {\n      if (isMatch(relativePath, key)) {\n        matchedKey = key\n        matchedRule = value\n        break\n      }\n      if (isMatch(`${relativePath}/jiek_ignore_dont_use_same_file_name`, key)) {\n        isParentMatched = true\n        matchedKey = key\n        matchedRule = value\n        break\n      }\n    }\n  }\n  if (!matchedRule) {\n    matchedKey = 'packages/*'\n    matchedRule = `@${workspaceName}/$basename`\n  }\n  if (!matchedRule)\n    throw new Error('no matched rule')\n  if (!name && isParentMatched) {\n    basename = await inquirer.prompt<{ name: string }>({\n      type: 'input',\n      name: 'name',\n      message: `the matched rule is \\`${String(matchedRule)}\\`, please input the basename\\n`\n    }).then(({ name }) => name)\n  }\n\n  if (typeof matchedRule === 'function') {\n    return matchedRule(name, {\n      full: wd,\n      relative: cwd,\n      basename: basename\n    })\n  }\n  if (typeof matchedRule === 'string') {\n    const dirName = name ?? basename\n    return [\n      matchedRule.replace(/\\$basename/g, dirName),\n      matchedKey?.replace(/\\/\\*$/g, `/${dirName}`)\n    ]\n  }\n  throw new Error('no matched rule')\n}\n\nprogram\n  .command('init [name]')\n  .option('-t, --template <template>', 'the package.json template file path or file content')\n  .action(async () => {\n    const [, name] = program.args\n    const cwd = process.cwd()\n    const { init = {} }: Config = loadConfig() ?? {}\n    const { wd } = getWD()\n    const workspaceName = path.basename(wd)\n\n    const {\n      named,\n      template,\n      bug = {},\n      readme: _readme = README_TEMPLATE,\n      readmeTemplate\n    } = init\n    const resolvedBug = {\n      template: 'bug_report.yml',\n      labels: ['bug'],\n      ...bug\n    }\n    let readme = _readme\n    if (readmeTemplate) {\n      const readmeTemplatePath = path.resolve(wd, readmeTemplate)\n      readme = fs.readFileSync(readmeTemplatePath, 'utf-8')\n    }\n\n    const templateString = getTemplateStr(wd, template)\n    // TODO detectIndent by editorconfig\n    const { indent = '    ' } = detectIndent(templateString)\n    const formattingOptions = {\n      tabSize: indent.length,\n      insertSpaces: true\n    }\n    const passFields = [\n      'license', 'author'\n    ]\n    let newJSONString = templateString\n    for (const field of passFields) {\n      newJSONString = applyEdits(newJSONString, modify(\n        newJSONString, [field], getWDPackageJSONFiled(wd, field), { formattingOptions }\n      ))\n    }\n    let [pkgName, pkgDir] = await getName(named, name, {\n      wd, cwd,\n      workspaceName\n    })\n    if (!pkgDir) {\n      const { dir } = await inquirer.prompt<{ dir: string }>({\n        type: 'input',\n        name: 'dir',\n        message: 'package directory',\n        default: name\n      })\n      pkgDir = dir\n    }\n    if (!pkgName) {\n      const { name: inputName } = await inquirer.prompt<{\n        name: string\n      }>({\n        type: 'input',\n        name: 'name',\n        message: 'package name',\n        default: name\n      })\n      pkgName = inputName\n    }\n    newJSONString = applyEdits(newJSONString, modify(newJSONString, ['name'], pkgName, { formattingOptions }))\n\n    let pkgRepo = getWDPackageJSONFiled(wd, 'repository')\n    if (typeof pkgRepo === 'string') {\n      pkgRepo = {\n        type: 'git',\n        url: pkgRepo,\n        directory: pkgDir\n      }\n    }\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['repository'], pkgRepo, { formattingOptions }\n    ))\n    const homepage = `${pkgRepo?.url}/blob/master/${pkgDir}/README.md`\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['homepage'], homepage, { formattingOptions }\n    ))\n    let labels = resolvedBug.labels\n    if (typeof labels === 'function') labels = labels({\n      name: pkgName, dir: pkgDir\n    })\n    labels.push(`scope:${pkgName}`)\n    const bugs = `${pkgRepo?.url}/issues/new?template=${\n      resolvedBug.template\n    }&labels=${\n      labels.join(',')\n    }`\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['bugs'], bugs, { formattingOptions }\n    ))\n\n    function pkgDirTo(to: string) {\n      if (!pkgDir) throw new Error('pkgDir is not defined')\n\n      return path.resolve(pkgDir, to)\n    }\n    if (!fs.existsSync(pkgDir)) fs.mkdirSync(pkgDir)\n    const pkgJSONFilePath = pkgDirTo('package.json')\n    if (fs.existsSync(pkgJSONFilePath)) {\n      throw new Error('package.json already exists')\n    }\n    fs.writeFileSync(pkgJSONFilePath, newJSONString)\n    console.log(newJSONString, 'written to', pkgJSONFilePath)\n\n    const license = getWDPackageJSONFiled(wd, 'license')\n    const readmeFilePath = pkgDirTo('README.md')\n    if (typeof readme === 'function') {\n      readme = readme({\n        dir: pkgDir,\n        packageJson: JSON.parse(newJSONString)\n      })\n    }\n    const readmeContent = readme\n      .replace(/\\$name/g, pkgName)\n      .replace(/\\$license/g, license)\n    fs.writeFileSync(readmeFilePath, readmeContent)\n  })\n"],"names":["name"],"mappings":"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"}
         | 
| @@ -0,0 +1,2 @@ | |
| 1 | 
            +
            import e from"node:fs";import t from"node:path";import{program as n}from"commander";import a from"detect-indent";import r from"inquirer";import{applyEdits as o,modify as i}from"jsonc-parser";import{isMatch as s}from"micromatch";import{getWD as m}from"../utils/getWD.esm.min.js";import{loadConfig as c}from"../utils/loadConfig.esm.min.js";const p='{\n  "name": "",\n  "version": "0.0.1",\n  "description": "",\n  "license": "",\n  "author": "",\n  "files": ["dist"],\n  "exports": {\n    ".": "./src/index.ts"\n  },\n  "scripts": {\n  },\n  "homepage": "",\n  "repository": "",\n  "bugs": ""\n}'.trimStart(),l="# $name\n\n## Installation\n\n```bash\nnpm install $name\n# or\npnpm install $name\n# or\nyarn add $name\n```\n\n## Usage\n\n\n## License\n\n$license\n".trimStart();const f=new Map;function u(n,a){if(f.has(n))return f.get(n)[a];const r=t.resolve(n,"package.json"),o=JSON.parse(e.readFileSync(r,"utf-8"));return f.set(n,o),o[a]}n.command("init [name]").option("-t, --template <template>","the package.json template file path or file content").action((async()=>{const[,f]=n.args,d=process.cwd(),{init:g={}}=c()??{},{wd:y}=m(),w=t.basename(y),{named:h,template:b,bug:$={},readme:k=l,readmeTemplate:S}=g,j={template:"bug_report.yml",labels:["bug"],...$};let O=k;if(S){const n=t.resolve(y,S);O=e.readFileSync(n,"utf-8")}const E=function(n,a){let r=a??p,o=!1;try{a&&JSON.parse(a)}catch(e){o=!0}if(o){const o=t.resolve(n,a);r=e.readFileSync(o,"utf-8")}return r}(y,b),{indent:v="    "}=a(E),_={tabSize:v.length,insertSpaces:!0},x=["license","author"];let F=E;for(const e of x)F=o(F,i(F,[e],u(y,e),{formattingOptions:_}));let[N,D]=await async function(e,n,{wd:a,cwd:o,workspaceName:i}){const m=o.replace(`${a}/`,"");let c=t.basename(o);if("function"==typeof e)return e(n,{full:a,relative:o});let p,l,f=!1;if("object"==typeof e)if(o===a){const{rule:t}=await r.prompt({type:"list",name:"rule",message:"choose a rule",default:"default",choices:["default"].concat(Object.keys(e))});"default"!==t&&(p=t,l=e[t])}else for(const[t,n]of Object.entries(e)){if(s(m,t)){p=t,l=n;break}if(s(`${m}/jiek_ignore_dont_use_same_file_name`,t)){f=!0,p=t,l=n;break}}if(l||(p="packages/*",l=`@${i}/$basename`),!l)throw new Error("no matched rule");if(!n&&f&&(c=await r.prompt({type:"input",name:"name",message:`the matched rule is \`${String(l)}\`, please input the basename\n`}).then((({name:e})=>e))),"function"==typeof l)return l(n,{full:a,relative:o,basename:c});if("string"==typeof l){const e=n??c;return[l.replace(/\$basename/g,e),p?.replace(/\/\*$/g,`/${e}`)]}throw new Error("no matched rule")}(h,f,{wd:y,cwd:d,workspaceName:w});if(!D){const{dir:e}=await r.prompt({type:"input",name:"dir",message:"package directory",default:f});D=e}if(!N){const{name:e}=await r.prompt({type:"input",name:"name",message:"package name",default:f});N=e}F=o(F,i(F,["name"],N,{formattingOptions:_}));let J=u(y,"repository");"string"==typeof J&&(J={type:"git",url:J,directory:D}),F=o(F,i(F,["repository"],J,{formattingOptions:_}));F=o(F,i(F,["homepage"],`${J?.url}/blob/master/${D}/README.md`,{formattingOptions:_}));let M=j.labels;"function"==typeof M&&(M=M({name:N,dir:D})),M.push(`scope:${N}`);const A=`${J?.url}/issues/new?template=${j.template}&labels=${M.join(",")}`;function R(e){if(!D)throw new Error("pkgDir is not defined");return t.resolve(D,e)}F=o(F,i(F,["bugs"],A,{formattingOptions:_})),e.existsSync(D)||e.mkdirSync(D);const q=R("package.json");if(e.existsSync(q))throw new Error("package.json already exists");e.writeFileSync(q,F),console.log(F,"written to",q);const z=u(y,"license"),C=R("README.md");"function"==typeof O&&(O=O({dir:D,packageJson:JSON.parse(F)}));const I=O.replace(/\$name/g,N).replace(/\$license/g,z);e.writeFileSync(C,I)}));
         | 
| 2 | 
            +
            //# sourceMappingURL=init.esm.min.js.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"init.esm.min.js","sources":["../../src/commands/init.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { program } from 'commander'\nimport detectIndent from 'detect-indent'\nimport inquirer from 'inquirer'\nimport { applyEdits, modify } from 'jsonc-parser'\nimport { isMatch } from 'micromatch'\n\nimport type { Config, InitNamed } from '../base'\nimport { getWD } from '../utils/getWD'\nimport { loadConfig } from '../utils/loadConfig'\n\nconst PACKAGE_JSON_TEMPLATE = `{\n  \"name\": \"\",\n  \"version\": \"0.0.1\",\n  \"description\": \"\",\n  \"license\": \"\",\n  \"author\": \"\",\n  \"files\": [\"dist\"],\n  \"exports\": {\n    \".\": \"./src/index.ts\"\n  },\n  \"scripts\": {\n  },\n  \"homepage\": \"\",\n  \"repository\": \"\",\n  \"bugs\": \"\"\n}`.trimStart()\nconst README_TEMPLATE = `# $name\n\n## Installation\n\n\\`\\`\\`bash\nnpm install $name\n# or\npnpm install $name\n# or\nyarn add $name\n\\`\\`\\`\n\n## Usage\n\n\n## License\n\n$license\n`.trimStart()\n\nfunction getTemplateStr(wd: string, template: string | undefined) {\n  let templateString = template ?? PACKAGE_JSON_TEMPLATE\n  let isTemplateFile = false\n  try {\n    if (template) JSON.parse(template)\n  } catch (e) {\n    isTemplateFile = true\n  }\n  if (isTemplateFile) {\n    const templatePath = path.resolve(wd, template!)\n    templateString = fs.readFileSync(templatePath, 'utf-8')\n  }\n  return templateString\n}\nconst wdCache = new Map<string, Record<string, any>>()\nfunction getWDPackageJSONFiled(wd: string, field: string) {\n  if (wdCache.has(wd)) {\n    return wdCache.get(wd)![field]\n  }\n  const packageJSONPath = path.resolve(wd, 'package.json')\n  const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, 'utf-8'))\n  wdCache.set(wd, packageJSON)\n  return packageJSON[field]\n}\nasync function getName(\n  named: InitNamed | undefined,\n  name: string,\n  {\n    wd, cwd,\n    workspaceName\n  }: {\n    wd: string\n    cwd: string\n    workspaceName: string\n  }\n): Promise<[name?: string, path?: string]> {\n  const relativePath = cwd.replace(`${wd}/`, '')\n  let basename = path.basename(cwd)\n\n  if (typeof named === 'function') {\n    return named(name, {\n      full: wd,\n      relative: cwd\n    })\n  }\n\n  let isParentMatched = false\n  let matchedKey: string | undefined\n  let matchedRule: NonNullable<typeof named>[string] | undefined\n  if (typeof named === 'object') {\n    const isWD = cwd === wd\n    if (isWD) {\n      const { rule } = await inquirer.prompt<{ rule: string }>({\n        type: 'list',\n        name: 'rule',\n        message: 'choose a rule',\n        default: 'default',\n        choices: ['default'].concat(Object.keys(named))\n      })\n      if (rule !== 'default') {\n        matchedKey = rule\n        matchedRule = named[rule]\n      }\n    } else for (const [key, value] of Object.entries(named)) {\n      if (isMatch(relativePath, key)) {\n        matchedKey = key\n        matchedRule = value\n        break\n      }\n      if (isMatch(`${relativePath}/jiek_ignore_dont_use_same_file_name`, key)) {\n        isParentMatched = true\n        matchedKey = key\n        matchedRule = value\n        break\n      }\n    }\n  }\n  if (!matchedRule) {\n    matchedKey = 'packages/*'\n    matchedRule = `@${workspaceName}/$basename`\n  }\n  if (!matchedRule)\n    throw new Error('no matched rule')\n  if (!name && isParentMatched) {\n    basename = await inquirer.prompt<{ name: string }>({\n      type: 'input',\n      name: 'name',\n      message: `the matched rule is \\`${String(matchedRule)}\\`, please input the basename\\n`\n    }).then(({ name }) => name)\n  }\n\n  if (typeof matchedRule === 'function') {\n    return matchedRule(name, {\n      full: wd,\n      relative: cwd,\n      basename: basename\n    })\n  }\n  if (typeof matchedRule === 'string') {\n    const dirName = name ?? basename\n    return [\n      matchedRule.replace(/\\$basename/g, dirName),\n      matchedKey?.replace(/\\/\\*$/g, `/${dirName}`)\n    ]\n  }\n  throw new Error('no matched rule')\n}\n\nprogram\n  .command('init [name]')\n  .option('-t, --template <template>', 'the package.json template file path or file content')\n  .action(async () => {\n    const [, name] = program.args\n    const cwd = process.cwd()\n    const { init = {} }: Config = loadConfig() ?? {}\n    const { wd } = getWD()\n    const workspaceName = path.basename(wd)\n\n    const {\n      named,\n      template,\n      bug = {},\n      readme: _readme = README_TEMPLATE,\n      readmeTemplate\n    } = init\n    const resolvedBug = {\n      template: 'bug_report.yml',\n      labels: ['bug'],\n      ...bug\n    }\n    let readme = _readme\n    if (readmeTemplate) {\n      const readmeTemplatePath = path.resolve(wd, readmeTemplate)\n      readme = fs.readFileSync(readmeTemplatePath, 'utf-8')\n    }\n\n    const templateString = getTemplateStr(wd, template)\n    // TODO detectIndent by editorconfig\n    const { indent = '    ' } = detectIndent(templateString)\n    const formattingOptions = {\n      tabSize: indent.length,\n      insertSpaces: true\n    }\n    const passFields = [\n      'license', 'author'\n    ]\n    let newJSONString = templateString\n    for (const field of passFields) {\n      newJSONString = applyEdits(newJSONString, modify(\n        newJSONString, [field], getWDPackageJSONFiled(wd, field), { formattingOptions }\n      ))\n    }\n    let [pkgName, pkgDir] = await getName(named, name, {\n      wd, cwd,\n      workspaceName\n    })\n    if (!pkgDir) {\n      const { dir } = await inquirer.prompt<{ dir: string }>({\n        type: 'input',\n        name: 'dir',\n        message: 'package directory',\n        default: name\n      })\n      pkgDir = dir\n    }\n    if (!pkgName) {\n      const { name: inputName } = await inquirer.prompt<{\n        name: string\n      }>({\n        type: 'input',\n        name: 'name',\n        message: 'package name',\n        default: name\n      })\n      pkgName = inputName\n    }\n    newJSONString = applyEdits(newJSONString, modify(newJSONString, ['name'], pkgName, { formattingOptions }))\n\n    let pkgRepo = getWDPackageJSONFiled(wd, 'repository')\n    if (typeof pkgRepo === 'string') {\n      pkgRepo = {\n        type: 'git',\n        url: pkgRepo,\n        directory: pkgDir\n      }\n    }\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['repository'], pkgRepo, { formattingOptions }\n    ))\n    const homepage = `${pkgRepo?.url}/blob/master/${pkgDir}/README.md`\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['homepage'], homepage, { formattingOptions }\n    ))\n    let labels = resolvedBug.labels\n    if (typeof labels === 'function') labels = labels({\n      name: pkgName, dir: pkgDir\n    })\n    labels.push(`scope:${pkgName}`)\n    const bugs = `${pkgRepo?.url}/issues/new?template=${\n      resolvedBug.template\n    }&labels=${\n      labels.join(',')\n    }`\n    newJSONString = applyEdits(newJSONString, modify(\n      newJSONString, ['bugs'], bugs, { formattingOptions }\n    ))\n\n    function pkgDirTo(to: string) {\n      if (!pkgDir) throw new Error('pkgDir is not defined')\n\n      return path.resolve(pkgDir, to)\n    }\n    if (!fs.existsSync(pkgDir)) fs.mkdirSync(pkgDir)\n    const pkgJSONFilePath = pkgDirTo('package.json')\n    if (fs.existsSync(pkgJSONFilePath)) {\n      throw new Error('package.json already exists')\n    }\n    fs.writeFileSync(pkgJSONFilePath, newJSONString)\n    console.log(newJSONString, 'written to', pkgJSONFilePath)\n\n    const license = getWDPackageJSONFiled(wd, 'license')\n    const readmeFilePath = pkgDirTo('README.md')\n    if (typeof readme === 'function') {\n      readme = readme({\n        dir: pkgDir,\n        packageJson: JSON.parse(newJSONString)\n      })\n    }\n    const readmeContent = readme\n      .replace(/\\$name/g, pkgName)\n      .replace(/\\$license/g, license)\n    fs.writeFileSync(readmeFilePath, readmeContent)\n  })\n"],"names":["PACKAGE_JSON_TEMPLATE","trimStart","README_TEMPLATE","wdCache","Map","getWDPackageJSONFiled","wd","field","has","get","packageJSONPath","path","resolve","packageJSON","JSON","parse","fs","readFileSync","set","program","command","option","action","async","name","args","cwd","process","init","loadConfig","getWD","workspaceName","basename","named","template","bug","readme","_readme","readmeTemplate","resolvedBug","labels","readmeTemplatePath","templateString","isTemplateFile","e","templatePath","getTemplateStr","indent","detectIndent","formattingOptions","tabSize","length","insertSpaces","passFields","newJSONString","applyEdits","modify","pkgName","pkgDir","relativePath","replace","full","relative","matchedKey","matchedRule","isParentMatched","rule","inquirer","prompt","type","message","default","choices","concat","Object","keys","key","value","entries","isMatch","Error","String","then","dirName","getName","dir","inputName","pkgRepo","url","directory","push","bugs","join","pkgDirTo","to","existsSync","mkdirSync","pkgJSONFilePath","writeFileSync","console","log","license","readmeFilePath","packageJson","readmeContent"],"mappings":"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"}
         | 
    
        package/dist/index.d.ts
    CHANGED
    
    | @@ -1,2 +1,57 @@ | |
| 1 | 
            +
            type InitNamedFunction = (argument: string, paths: {
         | 
| 2 | 
            +
                full: string;
         | 
| 3 | 
            +
                relative: string;
         | 
| 4 | 
            +
                basename?: string;
         | 
| 5 | 
            +
            }) => [name?: string, path?: string];
         | 
| 6 | 
            +
            type InitNamed = InitNamedFunction | {
         | 
| 7 | 
            +
                /**
         | 
| 8 | 
            +
                 *
         | 
| 9 | 
            +
                 */
         | 
| 10 | 
            +
                [key: string]: string | InitNamedFunction;
         | 
| 11 | 
            +
            };
         | 
| 12 | 
            +
            interface Config {
         | 
| 13 | 
            +
                init?: {
         | 
| 14 | 
            +
                    /**
         | 
| 15 | 
            +
                     * the package.json template file path or file content
         | 
| 16 | 
            +
                     *
         | 
| 17 | 
            +
                     * if it can be parsed as json, it will be parsed
         | 
| 18 | 
            +
                     * if it is a relative file path, it will be resolved to an absolute path based on the current working directory
         | 
| 19 | 
            +
                     * if it is an absolute file path, it will be used directly
         | 
| 20 | 
            +
                     * @default '.jiek.template.package.json'
         | 
| 21 | 
            +
                     */
         | 
| 22 | 
            +
                    template?: string;
         | 
| 23 | 
            +
                    /**
         | 
| 24 | 
            +
                     * the readme content
         | 
| 25 | 
            +
                     *
         | 
| 26 | 
            +
                     * $name will be replaced with the package name
         | 
| 27 | 
            +
                     * $license will be replaced with the license
         | 
| 28 | 
            +
                     */
         | 
| 29 | 
            +
                    readme?: string | ((ctx: {
         | 
| 30 | 
            +
                        dir: string;
         | 
| 31 | 
            +
                        packageJson: Record<string, any>;
         | 
| 32 | 
            +
                    }) => string);
         | 
| 33 | 
            +
                    /**
         | 
| 34 | 
            +
                     * the readme template file path
         | 
| 35 | 
            +
                     * @default '.jiek.template.readme.md'
         | 
| 36 | 
            +
                     */
         | 
| 37 | 
            +
                    readmeTemplate?: string;
         | 
| 38 | 
            +
                    bug?: {
         | 
| 39 | 
            +
                        /**
         | 
| 40 | 
            +
                         * @default 'bug_report.yml'
         | 
| 41 | 
            +
                         */
         | 
| 42 | 
            +
                        template?: string;
         | 
| 43 | 
            +
                        /**
         | 
| 44 | 
            +
                         * @default ['bug']
         | 
| 45 | 
            +
                         */
         | 
| 46 | 
            +
                        labels?: string[] | ((ctx: {
         | 
| 47 | 
            +
                            name: string;
         | 
| 48 | 
            +
                            dir: string;
         | 
| 49 | 
            +
                        }) => string[]);
         | 
| 50 | 
            +
                    };
         | 
| 51 | 
            +
                    named?: InitNamed;
         | 
| 52 | 
            +
                };
         | 
| 53 | 
            +
            }
         | 
| 1 54 |  | 
| 2 | 
            -
             | 
| 55 | 
            +
            declare const defineConfig: (config: Config) => Config;
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            export { type Config, type InitNamed, type InitNamedFunction, defineConfig };
         | 
    
        package/dist/index.esm.d.ts
    CHANGED
    
    
    
        package/dist/index.esm.js
    CHANGED
    
    | @@ -1,9 +1,4 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            import './commands/publish.esm.js';
         | 
| 3 | 
            -
            import './commands/build.esm.js';
         | 
| 4 | 
            -
            import { program } from 'commander';
         | 
| 1 | 
            +
            const defineConfig = (config) => config;
         | 
| 5 2 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
            program.version(pkg.version).description(pkg.description).option("--root <root>", "root path");
         | 
| 8 | 
            -
            program.parse(process.argv);
         | 
| 3 | 
            +
            export { defineConfig };
         | 
| 9 4 | 
             
            //# sourceMappingURL=index.esm.js.map
         | 
    
        package/dist/index.esm.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import  | 
| 1 | 
            +
            {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import type { Config } from './base'\n\nexport const defineConfig = (config: Config) => config\n\nexport * from './base'\n"],"names":[],"mappings":"AAEa,MAAA,YAAA,GAAe,CAAC,MAAmB,KAAA;;;;"}
         | 
    
        package/dist/index.esm.min.js
    CHANGED
    
    | @@ -1,2 +1,2 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            const o=o=>o;export{o as defineConfig};
         | 
| 2 2 | 
             
            //# sourceMappingURL=index.esm.min.js.map
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"index.esm.min.js","sources":["../src/index.ts"],"sourcesContent":["import  | 
| 1 | 
            +
            {"version":3,"file":"index.esm.min.js","sources":["../src/index.ts"],"sourcesContent":["import type { Config } from './base'\n\nexport const defineConfig = (config: Config) => config\n\nexport * from './base'\n"],"names":["defineConfig","config"],"mappings":"AAEa,MAAAA,EAAgBC,GAAmBA"}
         | 
    
        package/dist/index.iife.js
    CHANGED
    
    | @@ -1,294 +1,11 @@ | |
| 1 | 
            -
            (function ( | 
| 2 | 
            -
             | 
| 1 | 
            +
            var jiek = (function (exports) {
         | 
| 2 | 
            +
            	'use strict';
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 4 | 
            +
            	const defineConfig = (config) => config;
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
                if (e && e.__esModule) return e;
         | 
| 8 | 
            -
                var n = Object.create(null);
         | 
| 9 | 
            -
                if (e) {
         | 
| 10 | 
            -
                  Object.keys(e).forEach(function (k) {
         | 
| 11 | 
            -
                    if (k !== 'default') {
         | 
| 12 | 
            -
                      var d = Object.getOwnPropertyDescriptor(e, k);
         | 
| 13 | 
            -
                      Object.defineProperty(n, k, d.get ? d : {
         | 
| 14 | 
            -
                        enumerable: true,
         | 
| 15 | 
            -
                        get: function () { return e[k]; }
         | 
| 16 | 
            -
                      });
         | 
| 17 | 
            -
                    }
         | 
| 18 | 
            -
                  });
         | 
| 19 | 
            -
                }
         | 
| 20 | 
            -
                n.default = e;
         | 
| 21 | 
            -
                return Object.freeze(n);
         | 
| 22 | 
            -
              }
         | 
| 6 | 
            +
            	exports.defineConfig = defineConfig;
         | 
| 23 7 |  | 
| 24 | 
            -
             | 
| 25 | 
            -
              var path__default = /*#__PURE__*/_interopDefault(path);
         | 
| 26 | 
            -
              var childProcess__namespace = /*#__PURE__*/_interopNamespace(childProcess);
         | 
| 27 | 
            -
              var detectIndent__default = /*#__PURE__*/_interopDefault(detectIndent);
         | 
| 28 | 
            -
              var childProcess__namespace$1 = /*#__PURE__*/_interopNamespace(childProcess$1);
         | 
| 8 | 
            +
            	return exports;
         | 
| 29 9 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
              try {
         | 
| 32 | 
            -
                require.resolve("@pnpm/filter-workspace-packages");
         | 
| 33 | 
            -
                type = "pnpm";
         | 
| 34 | 
            -
              } catch {
         | 
| 35 | 
            -
              }
         | 
| 36 | 
            -
              if (type !== "") {
         | 
| 37 | 
            -
                commander.program.option("-f, --filter <filter>", "filter packages");
         | 
| 38 | 
            -
              }
         | 
| 39 | 
            -
              async function getSelectedProjectsGraph() {
         | 
| 40 | 
            -
                let filter = commander.program.getOptionValue("filter");
         | 
| 41 | 
            -
                const rootOption = commander.program.getOptionValue("root");
         | 
| 42 | 
            -
                const root = rootOption ? path__default.default.isAbsolute(rootOption) ? rootOption : path__default.default.resolve(process.cwd(), rootOption) : process.cwd();
         | 
| 43 | 
            -
                let notWorkspace = false;
         | 
| 44 | 
            -
                let wd;
         | 
| 45 | 
            -
                try {
         | 
| 46 | 
            -
                  wd = getWorkspaceDir.getWorkspaceDir(root, type);
         | 
| 47 | 
            -
                } catch (e) {
         | 
| 48 | 
            -
                  if ("message" in e && e.message === "workspace root not found") {
         | 
| 49 | 
            -
                    wd = root;
         | 
| 50 | 
            -
                    notWorkspace = true;
         | 
| 51 | 
            -
                  } else {
         | 
| 52 | 
            -
                    throw e;
         | 
| 53 | 
            -
                  }
         | 
| 54 | 
            -
                }
         | 
| 55 | 
            -
                if (!notWorkspace && type === "pnpm") {
         | 
| 56 | 
            -
                  const pnpmWorkspaceFilePath = path__default.default.resolve(wd, "pnpm-workspace.yaml");
         | 
| 57 | 
            -
                  const pnpmWorkspaceFileContent = fs__default.default.readFileSync(pnpmWorkspaceFilePath, "utf-8");
         | 
| 58 | 
            -
                  const pnpmWorkspace = jsYaml.load(pnpmWorkspaceFileContent);
         | 
| 59 | 
            -
                  if (root === wd && !filter) {
         | 
| 60 | 
            -
                    throw new Error("root path is workspace root, please provide a filter");
         | 
| 61 | 
            -
                  }
         | 
| 62 | 
            -
                  if (root !== wd && !filter) {
         | 
| 63 | 
            -
                    const packageJSONIsExist = fs__default.default.existsSync(path__default.default.resolve(root, "package.json"));
         | 
| 64 | 
            -
                    if (!packageJSONIsExist) {
         | 
| 65 | 
            -
                      throw new Error("root path is not workspace root, please provide a filter");
         | 
| 66 | 
            -
                    }
         | 
| 67 | 
            -
                    const packageJSON = JSON.parse(fs__default.default.readFileSync(path__default.default.resolve(root, "package.json"), "utf-8"));
         | 
| 68 | 
            -
                    if (!packageJSON.name) {
         | 
| 69 | 
            -
                      throw new Error("root path is not workspace root, please provide a filter");
         | 
| 70 | 
            -
                    }
         | 
| 71 | 
            -
                    filter = packageJSON.name;
         | 
| 72 | 
            -
                  }
         | 
| 73 | 
            -
                  const { selectedProjectsGraph } = await filterWorkspacePackages.filterPackagesFromDir(wd, [{
         | 
| 74 | 
            -
                    filter: filter ?? "",
         | 
| 75 | 
            -
                    followProdDepsOnly: true
         | 
| 76 | 
            -
                  }], {
         | 
| 77 | 
            -
                    prefix: root,
         | 
| 78 | 
            -
                    workspaceDir: wd,
         | 
| 79 | 
            -
                    patterns: pnpmWorkspace.packages
         | 
| 80 | 
            -
                  });
         | 
| 81 | 
            -
                  return {
         | 
| 82 | 
            -
                    wd,
         | 
| 83 | 
            -
                    root,
         | 
| 84 | 
            -
                    value: Object.entries(selectedProjectsGraph).reduce((acc, [key, value]) => {
         | 
| 85 | 
            -
                      acc[key] = value.package.manifest;
         | 
| 86 | 
            -
                      return acc;
         | 
| 87 | 
            -
                    }, {})
         | 
| 88 | 
            -
                  };
         | 
| 89 | 
            -
                }
         | 
| 90 | 
            -
                return {
         | 
| 91 | 
            -
                  wd,
         | 
| 92 | 
            -
                  root,
         | 
| 93 | 
            -
                  value: {
         | 
| 94 | 
            -
                    [wd]: JSON.parse(fs__default.default.readFileSync(path__default.default.resolve(wd, "package.json"), "utf-8"))
         | 
| 95 | 
            -
                  }
         | 
| 96 | 
            -
                };
         | 
| 97 | 
            -
              }
         | 
| 98 | 
            -
             | 
| 99 | 
            -
              let resolve;
         | 
| 100 | 
            -
              function actionDone() {
         | 
| 101 | 
            -
                resolve();
         | 
| 102 | 
            -
              }
         | 
| 103 | 
            -
              function actionRestore() {
         | 
| 104 | 
            -
                new Promise((r) => resolve = r);
         | 
| 105 | 
            -
              }
         | 
| 106 | 
            -
             | 
| 107 | 
            -
              function commondir(files, cwd = process.cwd()) {
         | 
| 108 | 
            -
                const resolvedFiles = files.map((file) => {
         | 
| 109 | 
            -
                  if (path__default.default.isAbsolute(file))
         | 
| 110 | 
            -
                    return file;
         | 
| 111 | 
            -
                  return path__default.default.resolve(cwd, file);
         | 
| 112 | 
            -
                });
         | 
| 113 | 
            -
                const sep = "/";
         | 
| 114 | 
            -
                const [first = ""] = resolvedFiles;
         | 
| 115 | 
            -
                const parts = first.split(sep);
         | 
| 116 | 
            -
                let common = "";
         | 
| 117 | 
            -
                for (let i = 0; i < parts.length; i++) {
         | 
| 118 | 
            -
                  const segment = parts[i];
         | 
| 119 | 
            -
                  if (resolvedFiles.every((file) => file.startsWith(common + segment))) {
         | 
| 120 | 
            -
                    common += segment + sep;
         | 
| 121 | 
            -
                  } else {
         | 
| 122 | 
            -
                    break;
         | 
| 123 | 
            -
                  }
         | 
| 124 | 
            -
                }
         | 
| 125 | 
            -
                return common;
         | 
| 126 | 
            -
              }
         | 
| 127 | 
            -
             | 
| 128 | 
            -
              function mergePackageJson(manifest, cwd) {
         | 
| 129 | 
            -
                const {
         | 
| 130 | 
            -
                  jiek: { cwd: _, ...jiek } = {}
         | 
| 131 | 
            -
                } = manifest;
         | 
| 132 | 
            -
                let { exports } = manifest;
         | 
| 133 | 
            -
                let includeIndex = false;
         | 
| 134 | 
            -
                if (typeof exports === "string") {
         | 
| 135 | 
            -
                  includeIndex = true;
         | 
| 136 | 
            -
                  exports = { ".": exports };
         | 
| 137 | 
            -
                }
         | 
| 138 | 
            -
                if (exports === void 0) {
         | 
| 139 | 
            -
                  exports = { ".": "./src/index.ts" };
         | 
| 140 | 
            -
                }
         | 
| 141 | 
            -
                if (typeof exports === "object") {
         | 
| 142 | 
            -
                  if (Array.isArray(exports) && exports.length > 0) {
         | 
| 143 | 
            -
                    includeIndex = true;
         | 
| 144 | 
            -
                  } else {
         | 
| 145 | 
            -
                    includeIndex = !!exports["."];
         | 
| 146 | 
            -
                  }
         | 
| 147 | 
            -
                }
         | 
| 148 | 
            -
                const inputs = Array.isArray(exports) ? exports : Object.entries(exports).reduce((acc, [key, value]) => {
         | 
| 149 | 
            -
                  if (typeof value === "string")
         | 
| 150 | 
            -
                    return key === "." ? [value, ...acc] : acc.concat(value);
         | 
| 151 | 
            -
                  if (Array.isArray(value))
         | 
| 152 | 
            -
                    return acc.concat(value);
         | 
| 153 | 
            -
                  throw new TypeError(`Unexpected value type for key "${key}" in exports, expected string, got ${typeof value}`);
         | 
| 154 | 
            -
                }, []);
         | 
| 155 | 
            -
                if (inputs.length === 0)
         | 
| 156 | 
            -
                  throw new Error("No inputs found");
         | 
| 157 | 
            -
                const absoluteInputs = inputs.map(
         | 
| 158 | 
            -
                  (input) => path__default.default.isAbsolute(input) ? input : path__default.default.resolve(cwd, input)
         | 
| 159 | 
            -
                );
         | 
| 160 | 
            -
                let cDir = path__default.default.dirname(absoluteInputs[0]);
         | 
| 161 | 
            -
                if (absoluteInputs.length > 1) {
         | 
| 162 | 
            -
                  cDir = commondir(absoluteInputs, cwd);
         | 
| 163 | 
            -
                }
         | 
| 164 | 
            -
                const resolvedInputs = absoluteInputs.map((input) => {
         | 
| 165 | 
            -
                  return path__default.default.relative(cDir, input);
         | 
| 166 | 
            -
                });
         | 
| 167 | 
            -
                return {
         | 
| 168 | 
            -
                  ...manifest,
         | 
| 169 | 
            -
                  ...pkger.pkger({
         | 
| 170 | 
            -
                    cwd,
         | 
| 171 | 
            -
                    noIndex: !includeIndex,
         | 
| 172 | 
            -
                    source: path__default.default.relative(cwd, cDir),
         | 
| 173 | 
            -
                    inputs: resolvedInputs,
         | 
| 174 | 
            -
                    ...jiek
         | 
| 175 | 
            -
                  })
         | 
| 176 | 
            -
                };
         | 
| 177 | 
            -
              }
         | 
| 178 | 
            -
             | 
| 179 | 
            -
              commander.program.command("publish").aliases(["pub", "p"]).option("-b, --bumper <bumper>", "bump version", "patch").option("-p, --preview", "preview publish").action(async ({ preview, bumper: bumper$1, ...options }) => {
         | 
| 180 | 
            -
                actionRestore();
         | 
| 181 | 
            -
                const { value = {} } = await getSelectedProjectsGraph() ?? {};
         | 
| 182 | 
            -
                const selectedProjectsGraphEntries = Object.entries(value);
         | 
| 183 | 
            -
                if (selectedProjectsGraphEntries.length === 0) {
         | 
| 184 | 
            -
                  throw new Error("no packages selected");
         | 
| 185 | 
            -
                }
         | 
| 186 | 
            -
                const mainfests = selectedProjectsGraphEntries.map(([dir, manifest]) => [
         | 
| 187 | 
            -
                  dir,
         | 
| 188 | 
            -
                  mergePackageJson(manifest, dir)
         | 
| 189 | 
            -
                ]);
         | 
| 190 | 
            -
                const passArgs = Object.entries(options).reduce((acc, [key, value2]) => {
         | 
| 191 | 
            -
                  if (value2) {
         | 
| 192 | 
            -
                    acc.push(`--${key}`, value2);
         | 
| 193 | 
            -
                  }
         | 
| 194 | 
            -
                  return acc;
         | 
| 195 | 
            -
                }, []);
         | 
| 196 | 
            -
                for (const [dir, manifest] of mainfests) {
         | 
| 197 | 
            -
                  const oldJSONString = fs__default.default.readFileSync(path__default.default.join(dir, "package.json"), "utf-8");
         | 
| 198 | 
            -
                  const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
         | 
| 199 | 
            -
                  const newVersion = bumper.bump(oldJSON.version, bumper$1);
         | 
| 200 | 
            -
                  const { indent = "    " } = detectIndent__default.default(oldJSONString);
         | 
| 201 | 
            -
                  const formattingOptions = {
         | 
| 202 | 
            -
                    tabSize: indent.length,
         | 
| 203 | 
            -
                    insertSpaces: true
         | 
| 204 | 
            -
                  };
         | 
| 205 | 
            -
                  let newJSONString = oldJSONString;
         | 
| 206 | 
            -
                  newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 207 | 
            -
                    newJSONString,
         | 
| 208 | 
            -
                    ["version"],
         | 
| 209 | 
            -
                    newVersion,
         | 
| 210 | 
            -
                    { formattingOptions }
         | 
| 211 | 
            -
                  ));
         | 
| 212 | 
            -
                  for (const [key, value2] of Object.entries(manifest)) {
         | 
| 213 | 
            -
                    if (JSON.stringify(value2) === JSON.stringify(oldJSON[key]))
         | 
| 214 | 
            -
                      continue;
         | 
| 215 | 
            -
                    newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 216 | 
            -
                      newJSONString,
         | 
| 217 | 
            -
                      ["publishConfig", key],
         | 
| 218 | 
            -
                      value2,
         | 
| 219 | 
            -
                      { formattingOptions }
         | 
| 220 | 
            -
                    ));
         | 
| 221 | 
            -
                  }
         | 
| 222 | 
            -
                  try {
         | 
| 223 | 
            -
                    fs__default.default.renameSync(path__default.default.join(dir, "package.json"), path__default.default.join(dir, "package.json.bak"));
         | 
| 224 | 
            -
                    fs__default.default.writeFileSync(path__default.default.join(dir, "package.json"), newJSONString);
         | 
| 225 | 
            -
                    console.log(newJSONString);
         | 
| 226 | 
            -
                    if (preview) {
         | 
| 227 | 
            -
                      console.warn("preview mode");
         | 
| 228 | 
            -
                      continue;
         | 
| 229 | 
            -
                    }
         | 
| 230 | 
            -
                    childProcess__namespace.execSync(["pnpm", "publish", "--access", "public", "--no-git-checks", ...passArgs].join(" "), {
         | 
| 231 | 
            -
                      cwd: dir,
         | 
| 232 | 
            -
                      stdio: "inherit"
         | 
| 233 | 
            -
                    });
         | 
| 234 | 
            -
                    const modifyVersionPackageJSON = jsoncParser.applyEdits(oldJSONString, jsoncParser.modify(oldJSONString, ["version"], newVersion, {}));
         | 
| 235 | 
            -
                    fs__default.default.writeFileSync(path__default.default.join(dir, "package.json.bak"), modifyVersionPackageJSON);
         | 
| 236 | 
            -
                  } finally {
         | 
| 237 | 
            -
                    fs__default.default.unlinkSync(path__default.default.join(dir, "package.json"));
         | 
| 238 | 
            -
                    fs__default.default.renameSync(path__default.default.join(dir, "package.json.bak"), path__default.default.join(dir, "package.json"));
         | 
| 239 | 
            -
                  }
         | 
| 240 | 
            -
                }
         | 
| 241 | 
            -
                actionDone();
         | 
| 242 | 
            -
              });
         | 
| 243 | 
            -
             | 
| 244 | 
            -
              const FILE_TEMPLATE = (manifest) => `
         | 
| 245 | 
            -
            const pkg = ${JSON.stringify(manifest, null, 2)}
         | 
| 246 | 
            -
            const { jiek = {} } = pkg
         | 
| 247 | 
            -
            const templateArg = jiek.templateArgFilePath
         | 
| 248 | 
            -
              ? require.resolve(jiek.templateArgFilePath)
         | 
| 249 | 
            -
              : {
         | 
| 250 | 
            -
                styled: jiek.styled
         | 
| 251 | 
            -
              }
         | 
| 252 | 
            -
            module.exports = require('jiek/rollup').template(templateArg, pkg)
         | 
| 253 | 
            -
            `.trimStart();
         | 
| 254 | 
            -
              commander.program.command("build").action(async () => {
         | 
| 255 | 
            -
                actionRestore();
         | 
| 256 | 
            -
                const {
         | 
| 257 | 
            -
                  wd,
         | 
| 258 | 
            -
                  value = {}
         | 
| 259 | 
            -
                } = await getSelectedProjectsGraph() ?? {};
         | 
| 260 | 
            -
                if (Object.keys(value).length === 0) {
         | 
| 261 | 
            -
                  throw new Error("no package found");
         | 
| 262 | 
            -
                }
         | 
| 263 | 
            -
                const jiekTempDir = (...paths) => path__default.default.resolve(wd, "node_modules/.jiek", ...paths);
         | 
| 264 | 
            -
                if (!fs__default.default.existsSync(jiekTempDir()))
         | 
| 265 | 
            -
                  fs__default.default.mkdirSync(jiekTempDir());
         | 
| 266 | 
            -
                const rollupBinaryPath = require.resolve("rollup").replace(/dist\/rollup.js$/, "dist/bin/rollup");
         | 
| 267 | 
            -
                let i = 0;
         | 
| 268 | 
            -
                for (const [dir, manifest] of Object.entries(value)) {
         | 
| 269 | 
            -
                  const newManifest = mergePackageJson(manifest, dir);
         | 
| 270 | 
            -
                  const escapeManifestName = manifest.name?.replace(/^@/g, "").replace(/\//g, "+");
         | 
| 271 | 
            -
                  const configFile = jiekTempDir(
         | 
| 272 | 
            -
                    `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
         | 
| 273 | 
            -
                  );
         | 
| 274 | 
            -
                  fs__default.default.writeFileSync(configFile, FILE_TEMPLATE(newManifest));
         | 
| 275 | 
            -
                  let prefix = "";
         | 
| 276 | 
            -
                  if (process.env.NODE_ENV === "test") {
         | 
| 277 | 
            -
                    const registerPath = require.resolve("esbuild-register");
         | 
| 278 | 
            -
                    const loaderPath = require.resolve("esbuild-register/loader");
         | 
| 279 | 
            -
                    prefix = `node --import ${registerPath} -r ${loaderPath} `;
         | 
| 280 | 
            -
                  }
         | 
| 281 | 
            -
                  childProcess__namespace$1.execSync(`${prefix}${rollupBinaryPath} -c ${configFile}`, {
         | 
| 282 | 
            -
                    cwd: dir,
         | 
| 283 | 
            -
                    stdio: "inherit"
         | 
| 284 | 
            -
                  });
         | 
| 285 | 
            -
                }
         | 
| 286 | 
            -
                actionDone();
         | 
| 287 | 
            -
              });
         | 
| 288 | 
            -
             | 
| 289 | 
            -
              const pkg = require("../package.json");
         | 
| 290 | 
            -
              commander.program.version(pkg.version).description(pkg.description).option("--root <root>", "root path");
         | 
| 291 | 
            -
              commander.program.parse(process.argv);
         | 
| 292 | 
            -
             | 
| 293 | 
            -
            })(fs, path, getWorkspaceDir, filterWorkspacePackages, commander, jsYaml, bumper, childProcess, detectIndent, jsoncParser, pkger, childProcess$1);
         | 
| 10 | 
            +
            })({});
         | 
| 294 11 | 
             
            //# sourceMappingURL=index.iife.js.map
         | 
    
        package/dist/index.iife.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"index.iife.js","sources":["../src/utils/filterSupport.ts","../src/inner.ts","../src/utils/commondir.ts","../src/merge-package-json.ts","../src/commands/publish.ts","../src/commands/build.ts","../src/index.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { getWorkspaceDir } from '@jiek/utils/getWorkspaceDir'\nimport { filterPackagesFromDir } from '@pnpm/filter-workspace-packages'\nimport { program } from 'commander'\nimport { load } from 'js-yaml'\n\nexport let type = ''\n\ntry {\n  require.resolve('@pnpm/filter-workspace-packages')\n  type = 'pnpm'\n} catch { /* empty */ }\nif (type !== '') {\n  program\n    .option('-f, --filter <filter>', 'filter packages')\n}\n\ninterface ProjectsGraph {\n  wd: string\n  root: string\n  value?: Record<string, {\n    name?: string\n  }>\n}\n\nexport async function getSelectedProjectsGraph(): Promise<ProjectsGraph> {\n  let filter = program.getOptionValue('filter')\n  const rootOption = program.getOptionValue('root')\n  const root = rootOption\n    ? path.isAbsolute(rootOption)\n      ? rootOption\n      : path.resolve(process.cwd(), rootOption)\n    : process.cwd()\n  let notWorkspace = false\n  let wd: string\n  try {\n    wd = getWorkspaceDir(root, type)\n  } catch (e) {\n    // @ts-ignore\n    if ('message' in e && e.message === 'workspace root not found') {\n      wd = root\n      notWorkspace = true\n    } else {\n      throw e\n    }\n  }\n  if (!notWorkspace && type === 'pnpm') {\n    const pnpmWorkspaceFilePath = path.resolve(wd, 'pnpm-workspace.yaml')\n    const pnpmWorkspaceFileContent = fs.readFileSync(pnpmWorkspaceFilePath, 'utf-8')\n    const pnpmWorkspace = load(pnpmWorkspaceFileContent) as {\n      packages: string[]\n    }\n    if (root === wd && !filter) {\n      throw new Error('root path is workspace root, please provide a filter')\n      // TODO inquirer prompt support user select packages\n    }\n    if (root !== wd && !filter) {\n      const packageJSONIsExist = fs.existsSync(path.resolve(root, 'package.json'))\n      if (!packageJSONIsExist) {\n        throw new Error('root path is not workspace root, please provide a filter')\n      }\n      const packageJSON = JSON.parse(fs.readFileSync(path.resolve(root, 'package.json'), 'utf-8'))\n      if (!packageJSON.name) {\n        throw new Error('root path is not workspace root, please provide a filter')\n      }\n      filter = packageJSON.name\n    }\n    const { selectedProjectsGraph } = await filterPackagesFromDir(wd, [{\n      filter: filter ?? '',\n      followProdDepsOnly: true\n    }], {\n      prefix: root,\n      workspaceDir: wd,\n      patterns: pnpmWorkspace.packages\n    })\n    return {\n      wd, root,\n      value: Object.entries(selectedProjectsGraph)\n        .reduce((acc, [key, value]) => {\n          acc[key] = value.package.manifest\n          return acc\n        }, {} as NonNullable<ProjectsGraph['value']>)\n    }\n  }\n  return {\n    wd, root,\n    value: {\n      [wd]: JSON.parse(fs.readFileSync(path.resolve(wd, 'package.json'), 'utf-8'))\n    }\n  }\n}\n","let resolve: () => void\n\nexport let actionFuture: Promise<void>\n\nexport function actionDone() {\n  resolve()\n}\n\nexport function actionRestore() {\n  actionFuture = new Promise<void>(r => resolve = r)\n}\n","import path from 'node:path'\n\nexport function commondir(files: string[], cwd = process.cwd()): string {\n  const resolvedFiles = files.map(file => {\n    if (path.isAbsolute(file)) return file\n    return path.resolve(cwd, file)\n  })\n  const sep = '/'\n  const [first = ''] = resolvedFiles\n  const parts = first.split(sep)\n  let common = ''\n  for (let i = 0; i < parts.length; i++) {\n    const segment = parts[i]\n    if (resolvedFiles.every(file => file.startsWith(common + segment))) {\n      common += segment + sep\n    } else {\n      break\n    }\n  }\n  return common\n}\n","import path from 'node:path'\n\nimport { type Options, pkger } from '@jiek/pkger'\nimport type { Manifest } from '@pnpm/workspace.pkgs-graph'\n\nimport { commondir } from './utils/commondir'\n\nexport function mergePackageJson(manifest: Manifest & {\n  jiek?: Options\n  exports?: unknown | unknown[]\n}, cwd: string) {\n  const {\n    jiek: { cwd: _, ...jiek } = {}\n  } = manifest\n  let { exports } = manifest\n  let includeIndex = false\n  if (typeof exports === 'string') {\n    includeIndex = true\n    exports = { '.': exports }\n  }\n  if (exports === undefined) {\n    exports = { '.': './src/index.ts' }\n  }\n  if (typeof exports === 'object') {\n    if (Array.isArray(exports) && exports.length > 0) {\n      includeIndex = true\n    } else {\n      includeIndex = !!(<Record<string, unknown>>exports)['.']\n    }\n  }\n  const inputs = Array.isArray(exports)\n    ? exports as string[]\n    : Object\n      .entries(<Record<string, unknown>>exports)\n      .reduce((acc, [key, value]) => {\n        if (typeof value === 'string') return key === '.'\n          ? [value, ...acc]\n          : acc.concat(value)\n        if (Array.isArray(value)) return acc.concat(value)\n\n        throw new TypeError(`Unexpected value type for key \"${key}\" in exports, expected string, got ${typeof value}`)\n      }, [] as string[])\n  if (inputs.length === 0)\n    throw new Error('No inputs found')\n\n  const absoluteInputs = inputs.map(input => path.isAbsolute(input)\n    ? input\n    : path.resolve(cwd, input)\n  )\n  let cDir = path.dirname(absoluteInputs[0])\n  if (absoluteInputs.length > 1) {\n    cDir = commondir(absoluteInputs, cwd)\n  }\n  const resolvedInputs = absoluteInputs.map(input => {\n    return path.relative(cDir, input)\n  })\n  return {\n    ...manifest,\n    ...pkger({\n      cwd,\n      noIndex: !includeIndex,\n      source: path.relative(cwd, cDir),\n      inputs: resolvedInputs,\n      ...jiek\n    })\n  }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { bump, type BumperType } from '@jiek/utils/bumper'\nimport * as childProcess from 'child_process'\nimport { program } from 'commander'\nimport detectIndent from 'detect-indent'\nimport { applyEdits, modify } from 'jsonc-parser'\n\nimport { actionDone, actionRestore } from '../inner'\nimport { mergePackageJson } from '../merge-package-json'\nimport { getSelectedProjectsGraph } from '../utils/filterSupport'\n\nprogram\n  .command('publish')\n  .aliases(['pub', 'p'])\n  .option('-b, --bumper <bumper>', 'bump version', 'patch')\n  .option('-p, --preview', 'preview publish')\n  .action(async ({ preview, bumper, ...options }: {\n    preview?: boolean\n    bumper: BumperType\n  }) => {\n    actionRestore()\n\n    const { value = {} } = await getSelectedProjectsGraph() ?? {}\n    const selectedProjectsGraphEntries = Object.entries(value)\n    if (selectedProjectsGraphEntries.length === 0) {\n      throw new Error('no packages selected')\n    }\n    const mainfests = selectedProjectsGraphEntries\n      .map(([dir, manifest]) => [\n        dir, mergePackageJson(manifest, dir)\n      ] as const)\n    const passArgs = Object\n      .entries(options)\n      .reduce((acc, [key, value]) => {\n        if (value) {\n          acc.push(`--${key}`, value as string)\n        }\n        return acc\n      }, [] as string[])\n    for (const [dir, manifest] of mainfests) {\n      const oldJSONString = fs.readFileSync(path.join(dir, 'package.json'), 'utf-8')\n      const oldJSON = JSON.parse(oldJSONString) ?? '0.0.0'\n      const newVersion = bump(oldJSON.version, bumper)\n      // TODO detectIndent by editorconfig\n      const { indent = '    ' } = detectIndent(oldJSONString)\n      const formattingOptions = {\n        tabSize: indent.length,\n        insertSpaces: true\n      }\n      let newJSONString = oldJSONString\n      newJSONString = applyEdits(newJSONString, modify(\n        newJSONString, ['version'], newVersion, { formattingOptions }\n      ))\n      for (const [key, value] of Object.entries(manifest)) {\n        if (JSON.stringify(value) === JSON.stringify(oldJSON[key])) continue\n\n        newJSONString = applyEdits(newJSONString, modify(\n          newJSONString, ['publishConfig', key], value, { formattingOptions }\n        ))\n      }\n      try {\n        fs.renameSync(path.join(dir, 'package.json'), path.join(dir, 'package.json.bak'))\n        fs.writeFileSync(path.join(dir, 'package.json'), newJSONString)\n        console.log(newJSONString)\n        if (preview) {\n          console.warn('preview mode')\n          continue\n        }\n        childProcess.execSync(['pnpm', 'publish', '--access', 'public', '--no-git-checks', ...passArgs].join(' '), {\n          cwd: dir,\n          stdio: 'inherit'\n        })\n        const modifyVersionPackageJSON = applyEdits(oldJSONString, modify(oldJSONString, ['version'], newVersion, {}))\n        fs.writeFileSync(path.join(dir, 'package.json.bak'), modifyVersionPackageJSON)\n      } finally {\n        fs.unlinkSync(path.join(dir, 'package.json'))\n        fs.renameSync(path.join(dir, 'package.json.bak'), path.join(dir, 'package.json'))\n      }\n    }\n    actionDone()\n  })\n","import * as childProcess from 'node:child_process'\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { program } from 'commander'\n\nimport { actionDone, actionRestore } from '../inner'\nimport { mergePackageJson } from '../merge-package-json'\nimport { getSelectedProjectsGraph } from '../utils/filterSupport'\n\nconst FILE_TEMPLATE = (manifest: unknown) => `\nconst pkg = ${JSON.stringify(manifest, null, 2)}\nconst { jiek = {} } = pkg\nconst templateArg = jiek.templateArgFilePath\n  ? require.resolve(jiek.templateArgFilePath)\n  : {\n    styled: jiek.styled\n  }\nmodule.exports = require('jiek/rollup').template(templateArg, pkg)\n`.trimStart()\n\nprogram\n  .command('build')\n  .action(async () => {\n    actionRestore()\n    const {\n      wd, value = {}\n    } = await getSelectedProjectsGraph() ?? {}\n\n    if (Object.keys(value).length === 0) {\n      throw new Error('no package found')\n    }\n    const jiekTempDir = (...paths: string[]) => path.resolve(wd, 'node_modules/.jiek', ...paths)\n    if (!fs.existsSync(jiekTempDir())) fs.mkdirSync(jiekTempDir())\n\n    const rollupBinaryPath = require.resolve('rollup')\n      .replace(/dist\\/rollup.js$/, 'dist/bin/rollup')\n    let i = 0\n    for (const [dir, manifest] of Object.entries(value)) {\n      const newManifest = mergePackageJson(manifest, dir)\n      // TODO support auto build child packages in workspaces\n      const escapeManifestName = manifest.name?.replace(/^@/g, '').replace(/\\//g, '+')\n      const configFile = jiekTempDir(\n        `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`\n      )\n      fs.writeFileSync(configFile, FILE_TEMPLATE(newManifest))\n      let prefix = ''\n      if (process.env.NODE_ENV === 'test') {\n        const registerPath = require.resolve('esbuild-register')\n        const loaderPath = require.resolve('esbuild-register/loader')\n        prefix = `node --import ${registerPath} -r ${loaderPath} `\n      }\n      // TODO replace with `spawn` to support watch mode\n      childProcess.execSync(`${prefix}${rollupBinaryPath} -c ${configFile}`, {\n        cwd: dir, stdio: 'inherit'\n      })\n    }\n\n    actionDone()\n  })\n","import './utils/filterSupport'\nimport './commands/publish'\nimport './commands/build'\n\nimport { program } from 'commander'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pkg = require('../package.json')\n\nprogram\n  .version(pkg.version)\n  .description(pkg.description)\n  .option('--root <root>', 'root path')\n\nprogram.parse(process.argv)\n"],"names":["program","path","getWorkspaceDir","fs","load","filterPackagesFromDir","pkger","bumper","value","bump","detectIndent","applyEdits","modify","childProcess"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQO,IAAI,IAAO,GAAA,EAAA,CAAA;EAElB,IAAI;EACF,EAAA,OAAA,CAAQ,QAAQ,iCAAiC,CAAA,CAAA;EACjD,EAAO,IAAA,GAAA,MAAA,CAAA;EACT,CAAQ,CAAA,MAAA;EAAc,CAAA;EACtB,IAAI,SAAS,EAAI,EAAA;EACf,EACGA,iBAAA,CAAA,MAAA,CAAO,yBAAyB,iBAAiB,CAAA,CAAA;EACtD,CAAA;EAUA,eAAsB,wBAAmD,GAAA;EACvE,EAAI,IAAA,MAAA,GAASA,iBAAQ,CAAA,cAAA,CAAe,QAAQ,CAAA,CAAA;EAC5C,EAAM,MAAA,UAAA,GAAaA,iBAAQ,CAAA,cAAA,CAAe,MAAM,CAAA,CAAA;EAChD,EAAA,MAAM,IAAO,GAAA,UAAA,GACTC,qBAAK,CAAA,UAAA,CAAW,UAAU,CACxB,GAAA,UAAA,GACAA,qBAAK,CAAA,OAAA,CAAQ,QAAQ,GAAI,EAAA,EAAG,UAAU,CAAA,GACxC,QAAQ,GAAI,EAAA,CAAA;EAChB,EAAA,IAAI,YAAe,GAAA,KAAA,CAAA;EACnB,EAAI,IAAA,EAAA,CAAA;EACJ,EAAI,IAAA;EACF,IAAK,EAAA,GAAAC,+BAAA,CAAgB,MAAM,IAAI,CAAA,CAAA;EAAA,WACxB,CAAG,EAAA;EAEV,IAAA,IAAI,SAAa,IAAA,CAAA,IAAK,CAAE,CAAA,OAAA,KAAY,0BAA4B,EAAA;EAC9D,MAAK,EAAA,GAAA,IAAA,CAAA;EACL,MAAe,YAAA,GAAA,IAAA,CAAA;EAAA,KACV,MAAA;EACL,MAAM,MAAA,CAAA,CAAA;EAAA,KACR;EAAA,GACF;EACA,EAAI,IAAA,CAAC,YAAgB,IAAA,IAAA,KAAS,MAAQ,EAAA;EACpC,IAAA,MAAM,qBAAwB,GAAAD,qBAAA,CAAK,OAAQ,CAAA,EAAA,EAAI,qBAAqB,CAAA,CAAA;EACpE,IAAA,MAAM,wBAA2B,GAAAE,mBAAA,CAAG,YAAa,CAAA,qBAAA,EAAuB,OAAO,CAAA,CAAA;EAC/E,IAAM,MAAA,aAAA,GAAgBC,YAAK,wBAAwB,CAAA,CAAA;EAGnD,IAAI,IAAA,IAAA,KAAS,EAAM,IAAA,CAAC,MAAQ,EAAA;EAC1B,MAAM,MAAA,IAAI,MAAM,sDAAsD,CAAA,CAAA;EAAA,KAExE;EACA,IAAI,IAAA,IAAA,KAAS,EAAM,IAAA,CAAC,MAAQ,EAAA;EAC1B,MAAA,MAAM,qBAAqBD,mBAAG,CAAA,UAAA,CAAWF,sBAAK,OAAQ,CAAA,IAAA,EAAM,cAAc,CAAC,CAAA,CAAA;EAC3E,MAAA,IAAI,CAAC,kBAAoB,EAAA;EACvB,QAAM,MAAA,IAAI,MAAM,0DAA0D,CAAA,CAAA;EAAA,OAC5E;EACA,MAAM,MAAA,WAAA,GAAc,IAAK,CAAA,KAAA,CAAME,mBAAG,CAAA,YAAA,CAAaF,qBAAK,CAAA,OAAA,CAAQ,IAAM,EAAA,cAAc,CAAG,EAAA,OAAO,CAAC,CAAA,CAAA;EAC3F,MAAI,IAAA,CAAC,YAAY,IAAM,EAAA;EACrB,QAAM,MAAA,IAAI,MAAM,0DAA0D,CAAA,CAAA;EAAA,OAC5E;EACA,MAAA,MAAA,GAAS,WAAY,CAAA,IAAA,CAAA;EAAA,KACvB;EACA,IAAA,MAAM,EAAE,qBAAsB,EAAA,GAAI,MAAMI,6CAAA,CAAsB,IAAI,CAAC;EAAA,MACjE,QAAQ,MAAU,IAAA,EAAA;EAAA,MAClB,kBAAoB,EAAA,IAAA;EAAA,KACrB,CAAG,EAAA;EAAA,MACF,MAAQ,EAAA,IAAA;EAAA,MACR,YAAc,EAAA,EAAA;EAAA,MACd,UAAU,aAAc,CAAA,QAAA;EAAA,KACzB,CAAA,CAAA;EACD,IAAO,OAAA;EAAA,MACL,EAAA;EAAA,MAAI,IAAA;EAAA,MACJ,KAAA,EAAO,MAAO,CAAA,OAAA,CAAQ,qBAAqB,CAAA,CACxC,MAAO,CAAA,CAAC,GAAK,EAAA,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;EAC7B,QAAI,GAAA,CAAA,GAAG,CAAI,GAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAA;EACzB,QAAO,OAAA,GAAA,CAAA;EAAA,OACT,EAAG,EAAyC,CAAA;EAAA,KAChD,CAAA;EAAA,GACF;EACA,EAAO,OAAA;EAAA,IACL,EAAA;EAAA,IAAI,IAAA;EAAA,IACJ,KAAO,EAAA;EAAA,MACL,CAAC,EAAE,GAAG,IAAA,CAAK,KAAM,CAAAF,mBAAA,CAAG,YAAa,CAAAF,qBAAA,CAAK,OAAQ,CAAA,EAAA,EAAI,cAAc,CAAA,EAAG,OAAO,CAAC,CAAA;EAAA,KAC7E;EAAA,GACF,CAAA;EACF;;EC5FA,IAAI,OAAA,CAAA;EAIG,SAAS,UAAa,GAAA;EAC3B,EAAQ,OAAA,EAAA,CAAA;EACV,CAAA;EAEO,SAAS,aAAgB,GAAA;EAC9B,EAAe,IAAI,OAAA,CAAc,CAAK,CAAA,KAAA,OAAA,GAAU,CAAC,CAAA,CAAA;EACnD;;ECRO,SAAS,SAAU,CAAA,KAAA,EAAiB,GAAM,GAAA,OAAA,CAAQ,KAAe,EAAA;EACtE,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA;EACtC,IAAI,IAAAA,qBAAA,CAAK,WAAW,IAAI,CAAA;EAAG,MAAO,OAAA,IAAA,CAAA;EAClC,IAAO,OAAAA,qBAAA,CAAK,OAAQ,CAAA,GAAA,EAAK,IAAI,CAAA,CAAA;EAAA,GAC9B,CAAA,CAAA;EACD,EAAA,MAAM,GAAM,GAAA,GAAA,CAAA;EACZ,EAAM,MAAA,CAAC,KAAQ,GAAA,EAAE,CAAI,GAAA,aAAA,CAAA;EACrB,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;EAC7B,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;EACb,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;EACrC,IAAM,MAAA,OAAA,GAAU,MAAM,CAAC,CAAA,CAAA;EACvB,IAAI,IAAA,aAAA,CAAc,MAAM,CAAQ,IAAA,KAAA,IAAA,CAAK,WAAW,MAAS,GAAA,OAAO,CAAC,CAAG,EAAA;EAClE,MAAA,MAAA,IAAU,OAAU,GAAA,GAAA,CAAA;EAAA,KACf,MAAA;EACL,MAAA,MAAA;EAAA,KACF;EAAA,GACF;EACA,EAAO,OAAA,MAAA,CAAA;EACT;;ECbgB,SAAA,gBAAA,CAAiB,UAG9B,GAAa,EAAA;EACd,EAAM,MAAA;EAAA,IACJ,MAAM,EAAE,GAAA,EAAK,GAAG,GAAG,IAAA,KAAS,EAAC;EAAA,GAC3B,GAAA,QAAA,CAAA;EACJ,EAAI,IAAA,EAAE,SAAY,GAAA,QAAA,CAAA;EAClB,EAAA,IAAI,YAAe,GAAA,KAAA,CAAA;EACnB,EAAI,IAAA,OAAO,YAAY,QAAU,EAAA;EAC/B,IAAe,YAAA,GAAA,IAAA,CAAA;EACf,IAAU,OAAA,GAAA,EAAE,KAAK,OAAQ,EAAA,CAAA;EAAA,GAC3B;EACA,EAAA,IAAI,YAAY,KAAW,CAAA,EAAA;EACzB,IAAU,OAAA,GAAA,EAAE,KAAK,gBAAiB,EAAA,CAAA;EAAA,GACpC;EACA,EAAI,IAAA,OAAO,YAAY,QAAU,EAAA;EAC/B,IAAA,IAAI,MAAM,OAAQ,CAAA,OAAO,CAAK,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;EAChD,MAAe,YAAA,GAAA,IAAA,CAAA;EAAA,KACV,MAAA;EACL,MAAe,YAAA,GAAA,CAAC,CAA2B,OAAA,CAAS,GAAG,CAAA,CAAA;EAAA,KACzD;EAAA,GACF;EACA,EAAA,MAAM,SAAS,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA,GAChC,UACA,MACC,CAAA,OAAA,CAAiC,OAAO,CAAA,CACxC,OAAO,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;EAC7B,IAAA,IAAI,OAAO,KAAU,KAAA,QAAA;EAAU,MAAO,OAAA,GAAA,KAAQ,MAC1C,CAAC,KAAA,EAAO,GAAG,GAAG,CAAA,GACd,GAAI,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;EACpB,IAAI,IAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;EAAG,MAAO,OAAA,GAAA,CAAI,OAAO,KAAK,CAAA,CAAA;EAEjD,IAAA,MAAM,IAAI,SAAU,CAAA,CAAA,+BAAA,EAAkC,GAAG,CAAsC,mCAAA,EAAA,OAAO,KAAK,CAAE,CAAA,CAAA,CAAA;EAAA,GAC/G,EAAG,EAAc,CAAA,CAAA;EACrB,EAAA,IAAI,OAAO,MAAW,KAAA,CAAA;EACpB,IAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA,CAAA;EAEnC,EAAA,MAAM,iBAAiB,MAAO,CAAA,GAAA;EAAA,IAAI,CAAA,KAAA,KAASA,sBAAK,UAAW,CAAA,KAAK,IAC5D,KACA,GAAAA,qBAAA,CAAK,OAAQ,CAAA,GAAA,EAAK,KAAK,CAAA;EAAA,GAC3B,CAAA;EACA,EAAA,IAAI,IAAO,GAAAA,qBAAA,CAAK,OAAQ,CAAA,cAAA,CAAe,CAAC,CAAC,CAAA,CAAA;EACzC,EAAI,IAAA,cAAA,CAAe,SAAS,CAAG,EAAA;EAC7B,IAAO,IAAA,GAAA,SAAA,CAAU,gBAAgB,GAAG,CAAA,CAAA;EAAA,GACtC;EACA,EAAM,MAAA,cAAA,GAAiB,cAAe,CAAA,GAAA,CAAI,CAAS,KAAA,KAAA;EACjD,IAAO,OAAAA,qBAAA,CAAK,QAAS,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;EAAA,GACjC,CAAA,CAAA;EACD,EAAO,OAAA;EAAA,IACL,GAAG,QAAA;EAAA,IACH,GAAGK,WAAM,CAAA;EAAA,MACP,GAAA;EAAA,MACA,SAAS,CAAC,YAAA;EAAA,MACV,MAAQ,EAAAL,qBAAA,CAAK,QAAS,CAAA,GAAA,EAAK,IAAI,CAAA;EAAA,MAC/B,MAAQ,EAAA,cAAA;EAAA,MACR,GAAG,IAAA;EAAA,KACJ,CAAA;EAAA,GACH,CAAA;EACF;;ACrDAD,mBACG,CAAA,OAAA,CAAQ,SAAS,CAAA,CACjB,OAAQ,CAAA,CAAC,OAAO,GAAG,CAAC,CACpB,CAAA,MAAA,CAAO,uBAAyB,EAAA,cAAA,EAAgB,OAAO,CACvD,CAAA,MAAA,CAAO,eAAiB,EAAA,iBAAiB,CACzC,CAAA,MAAA,CAAO,OAAO,EAAE,OAAS,UAAAO,QAAA,EAAQ,GAAG,OAAA,EAG/B,KAAA;EACJ,EAAc,aAAA,EAAA,CAAA;EAEd,EAAM,MAAA,EAAE,QAAQ,EAAC,KAAM,MAAM,wBAAA,MAA8B,EAAC,CAAA;EAC5D,EAAM,MAAA,4BAAA,GAA+B,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;EACzD,EAAI,IAAA,4BAAA,CAA6B,WAAW,CAAG,EAAA;EAC7C,IAAM,MAAA,IAAI,MAAM,sBAAsB,CAAA,CAAA;EAAA,GACxC;EACA,EAAA,MAAM,YAAY,4BACf,CAAA,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,QAAQ,CAAM,KAAA;EAAA,IACxB,GAAA;EAAA,IAAK,gBAAA,CAAiB,UAAU,GAAG,CAAA;EAAA,GAC3B,CAAA,CAAA;EACZ,EAAM,MAAA,QAAA,GAAW,MACd,CAAA,OAAA,CAAQ,OAAO,CAAA,CACf,MAAO,CAAA,CAAC,GAAK,EAAA,CAAC,GAAKC,EAAAA,MAAK,CAAM,KAAA;EAC7B,IAAA,IAAIA,MAAO,EAAA;EACT,MAAA,GAAA,CAAI,IAAK,CAAA,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAIA,MAAe,CAAA,CAAA;EAAA,KACtC;EACA,IAAO,OAAA,GAAA,CAAA;EAAA,GACT,EAAG,EAAc,CAAA,CAAA;EACnB,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,QAAQ,CAAA,IAAK,SAAW,EAAA;EACvC,IAAM,MAAA,aAAA,GAAgBL,oBAAG,YAAa,CAAAF,qBAAA,CAAK,KAAK,GAAK,EAAA,cAAc,GAAG,OAAO,CAAA,CAAA;EAC7E,IAAA,MAAM,OAAU,GAAA,IAAA,CAAK,KAAM,CAAA,aAAa,CAAK,IAAA,OAAA,CAAA;EAC7C,IAAA,MAAM,UAAa,GAAAQ,WAAA,CAAK,OAAQ,CAAA,OAAA,EAASF,QAAM,CAAA,CAAA;EAE/C,IAAA,MAAM,EAAE,MAAA,GAAS,MAAO,EAAA,GAAIG,8BAAa,aAAa,CAAA,CAAA;EACtD,IAAA,MAAM,iBAAoB,GAAA;EAAA,MACxB,SAAS,MAAO,CAAA,MAAA;EAAA,MAChB,YAAc,EAAA,IAAA;EAAA,KAChB,CAAA;EACA,IAAA,IAAI,aAAgB,GAAA,aAAA,CAAA;EACpB,IAAA,aAAA,GAAgBC,uBAAW,aAAe,EAAAC,kBAAA;EAAA,MACxC,aAAA;EAAA,MAAe,CAAC,SAAS,CAAA;EAAA,MAAG,UAAA;EAAA,MAAY,EAAE,iBAAkB,EAAA;EAAA,KAC7D,CAAA,CAAA;EACD,IAAA,KAAA,MAAW,CAAC,GAAKJ,EAAAA,MAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA;EACnD,MAAI,IAAA,IAAA,CAAK,UAAUA,MAAK,CAAA,KAAM,KAAK,SAAU,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAA;EAAG,QAAA,SAAA;EAE5D,MAAA,aAAA,GAAgBG,uBAAW,aAAe,EAAAC,kBAAA;EAAA,QACxC,aAAA;EAAA,QAAe,CAAC,iBAAiB,GAAG,CAAA;EAAA,QAAGJ,MAAAA;EAAA,QAAO,EAAE,iBAAkB,EAAA;EAAA,OACnE,CAAA,CAAA;EAAA,KACH;EACA,IAAI,IAAA;EACF,MAAGL,mBAAA,CAAA,UAAA,CAAWF,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,cAAc,GAAGA,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,kBAAkB,CAAC,CAAA,CAAA;EAChF,MAAAE,mBAAA,CAAG,cAAcF,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,cAAc,GAAG,aAAa,CAAA,CAAA;EAC9D,MAAA,OAAA,CAAQ,IAAI,aAAa,CAAA,CAAA;EACzB,MAAA,IAAI,OAAS,EAAA;EACX,QAAA,OAAA,CAAQ,KAAK,cAAc,CAAA,CAAA;EAC3B,QAAA,SAAA;EAAA,OACF;EACA,MAAAY,uBAAA,CAAa,QAAS,CAAA,CAAC,MAAQ,EAAA,SAAA,EAAW,UAAY,EAAA,QAAA,EAAU,iBAAmB,EAAA,GAAG,QAAQ,CAAA,CAAE,IAAK,CAAA,GAAG,CAAG,EAAA;EAAA,QACzG,GAAK,EAAA,GAAA;EAAA,QACL,KAAO,EAAA,SAAA;EAAA,OACR,CAAA,CAAA;EACD,MAAM,MAAA,wBAAA,GAA2BF,sBAAW,CAAA,aAAA,EAAeC,kBAAO,CAAA,aAAA,EAAe,CAAC,SAAS,CAAG,EAAA,UAAA,EAAY,EAAE,CAAC,CAAA,CAAA;EAC7G,MAAAT,mBAAA,CAAG,cAAcF,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,kBAAkB,GAAG,wBAAwB,CAAA,CAAA;EAAA,KAC7E,SAAA;EACA,MAAAE,mBAAA,CAAG,UAAW,CAAAF,qBAAA,CAAK,IAAK,CAAA,GAAA,EAAK,cAAc,CAAC,CAAA,CAAA;EAC5C,MAAGE,mBAAA,CAAA,UAAA,CAAWF,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,kBAAkB,GAAGA,qBAAK,CAAA,IAAA,CAAK,GAAK,EAAA,cAAc,CAAC,CAAA,CAAA;EAAA,KAClF;EAAA,GACF;EACA,EAAW,UAAA,EAAA,CAAA;EACb,CAAC,CAAA;;ECxEH,MAAM,aAAA,GAAgB,CAAC,QAAsB,KAAA,CAAA;AAAA,YAAA,EAC/B,IAAK,CAAA,SAAA,CAAU,QAAU,EAAA,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAQ7C,SAAU,EAAA,CAAA;AAEZD,mBAAA,CACG,OAAQ,CAAA,OAAO,CACf,CAAA,MAAA,CAAO,YAAY;EAClB,EAAc,aAAA,EAAA,CAAA;EACd,EAAM,MAAA;EAAA,IACJ,EAAA;EAAA,IAAI,QAAQ,EAAC;EAAA,GACX,GAAA,MAAM,wBAAyB,EAAA,IAAK,EAAC,CAAA;EAEzC,EAAA,IAAI,MAAO,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;EACnC,IAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;EAAA,GACpC;EACA,EAAM,MAAA,WAAA,GAAc,IAAI,KAAoB,KAAAC,qBAAA,CAAK,QAAQ,EAAI,EAAA,oBAAA,EAAsB,GAAG,KAAK,CAAA,CAAA;EAC3F,EAAA,IAAI,CAACE,mBAAA,CAAG,UAAW,CAAA,WAAA,EAAa,CAAA;EAAG,IAAGA,mBAAA,CAAA,SAAA,CAAU,aAAa,CAAA,CAAA;EAE7D,EAAA,MAAM,mBAAmB,OAAQ,CAAA,OAAA,CAAQ,QAAQ,CAC9C,CAAA,OAAA,CAAQ,oBAAoB,iBAAiB,CAAA,CAAA;EAChD,EAAA,IAAI,CAAI,GAAA,CAAA,CAAA;EACR,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,QAAQ,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;EACnD,IAAM,MAAA,WAAA,GAAc,gBAAiB,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;EAElD,IAAM,MAAA,kBAAA,GAAqB,SAAS,IAAM,EAAA,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,OAAQ,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;EAC/E,IAAA,MAAM,UAAa,GAAA,WAAA;EAAA,MACjB,CAAG,EAAA,kBAAA,IAAsB,CAAa,UAAA,EAAA,CAAA,EAAG,CAAE,CAAA,CAAA,iBAAA,CAAA;EAAA,KAC7C,CAAA;EACA,IAAAA,mBAAA,CAAG,aAAc,CAAA,UAAA,EAAY,aAAc,CAAA,WAAW,CAAC,CAAA,CAAA;EACvD,IAAA,IAAI,MAAS,GAAA,EAAA,CAAA;EACb,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,MAAQ,EAAA;EACnC,MAAM,MAAA,YAAA,GAAe,OAAQ,CAAA,OAAA,CAAQ,kBAAkB,CAAA,CAAA;EACvD,MAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,OAAA,CAAQ,yBAAyB,CAAA,CAAA;EAC5D,MAAS,MAAA,GAAA,CAAA,cAAA,EAAiB,YAAY,CAAA,IAAA,EAAO,UAAU,CAAA,CAAA,CAAA,CAAA;EAAA,KACzD;EAEA,IAAAU,yBAAA,CAAa,SAAS,CAAG,EAAA,MAAM,GAAG,gBAAgB,CAAA,IAAA,EAAO,UAAU,CAAI,CAAA,EAAA;EAAA,MACrE,GAAK,EAAA,GAAA;EAAA,MAAK,KAAO,EAAA,SAAA;EAAA,KAClB,CAAA,CAAA;EAAA,GACH;EAEA,EAAW,UAAA,EAAA,CAAA;EACb,CAAC,CAAA;;ECpDH,MAAM,GAAA,GAAM,QAAQ,iBAAiB,CAAA,CAAA;AAErCb,mBACG,CAAA,OAAA,CAAQ,GAAI,CAAA,OAAO,CACnB,CAAA,WAAA,CAAY,IAAI,WAAW,CAAA,CAC3B,MAAO,CAAA,eAAA,EAAiB,WAAW,CAAA,CAAA;AAEtCA,mBAAQ,CAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;;;;;;"}
         | 
| 1 | 
            +
            {"version":3,"file":"index.iife.js","sources":["../src/index.ts"],"sourcesContent":["import type { Config } from './base'\n\nexport const defineConfig = (config: Config) => config\n\nexport * from './base'\n"],"names":[],"mappings":";;;AAEa,OAAA,YAAA,GAAe,CAAC,MAAmB,KAAA;;;;;;;;;;"}
         | 
    
        package/dist/index.iife.min.js
    CHANGED
    
    | @@ -1,2 +1,2 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            var jiek=function(e){"use strict";return e.defineConfig=e=>e,e}({});
         | 
| 2 2 | 
             
            //# sourceMappingURL=index.iife.min.js.map
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"index.iife.min.js","sources":["../src/utils/filterSupport.ts","../src/inner.ts","../src/merge-package-json.ts","../src/utils/commondir.ts","../src/commands/publish.ts","../src/commands/build.ts","../src/index.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { getWorkspaceDir } from '@jiek/utils/getWorkspaceDir'\nimport { filterPackagesFromDir } from '@pnpm/filter-workspace-packages'\nimport { program } from 'commander'\nimport { load } from 'js-yaml'\n\nexport let type = ''\n\ntry {\n  require.resolve('@pnpm/filter-workspace-packages')\n  type = 'pnpm'\n} catch { /* empty */ }\nif (type !== '') {\n  program\n    .option('-f, --filter <filter>', 'filter packages')\n}\n\ninterface ProjectsGraph {\n  wd: string\n  root: string\n  value?: Record<string, {\n    name?: string\n  }>\n}\n\nexport async function getSelectedProjectsGraph(): Promise<ProjectsGraph> {\n  let filter = program.getOptionValue('filter')\n  const rootOption = program.getOptionValue('root')\n  const root = rootOption\n    ? path.isAbsolute(rootOption)\n      ? rootOption\n      : path.resolve(process.cwd(), rootOption)\n    : process.cwd()\n  let notWorkspace = false\n  let wd: string\n  try {\n    wd = getWorkspaceDir(root, type)\n  } catch (e) {\n    // @ts-ignore\n    if ('message' in e && e.message === 'workspace root not found') {\n      wd = root\n      notWorkspace = true\n    } else {\n      throw e\n    }\n  }\n  if (!notWorkspace && type === 'pnpm') {\n    const pnpmWorkspaceFilePath = path.resolve(wd, 'pnpm-workspace.yaml')\n    const pnpmWorkspaceFileContent = fs.readFileSync(pnpmWorkspaceFilePath, 'utf-8')\n    const pnpmWorkspace = load(pnpmWorkspaceFileContent) as {\n      packages: string[]\n    }\n    if (root === wd && !filter) {\n      throw new Error('root path is workspace root, please provide a filter')\n      // TODO inquirer prompt support user select packages\n    }\n    if (root !== wd && !filter) {\n      const packageJSONIsExist = fs.existsSync(path.resolve(root, 'package.json'))\n      if (!packageJSONIsExist) {\n        throw new Error('root path is not workspace root, please provide a filter')\n      }\n      const packageJSON = JSON.parse(fs.readFileSync(path.resolve(root, 'package.json'), 'utf-8'))\n      if (!packageJSON.name) {\n        throw new Error('root path is not workspace root, please provide a filter')\n      }\n      filter = packageJSON.name\n    }\n    const { selectedProjectsGraph } = await filterPackagesFromDir(wd, [{\n      filter: filter ?? '',\n      followProdDepsOnly: true\n    }], {\n      prefix: root,\n      workspaceDir: wd,\n      patterns: pnpmWorkspace.packages\n    })\n    return {\n      wd, root,\n      value: Object.entries(selectedProjectsGraph)\n        .reduce((acc, [key, value]) => {\n          acc[key] = value.package.manifest\n          return acc\n        }, {} as NonNullable<ProjectsGraph['value']>)\n    }\n  }\n  return {\n    wd, root,\n    value: {\n      [wd]: JSON.parse(fs.readFileSync(path.resolve(wd, 'package.json'), 'utf-8'))\n    }\n  }\n}\n","let resolve: () => void\n\nexport let actionFuture: Promise<void>\n\nexport function actionDone() {\n  resolve()\n}\n\nexport function actionRestore() {\n  actionFuture = new Promise<void>(r => resolve = r)\n}\n","import path from 'node:path'\n\nimport { type Options, pkger } from '@jiek/pkger'\nimport type { Manifest } from '@pnpm/workspace.pkgs-graph'\n\nimport { commondir } from './utils/commondir'\n\nexport function mergePackageJson(manifest: Manifest & {\n  jiek?: Options\n  exports?: unknown | unknown[]\n}, cwd: string) {\n  const {\n    jiek: { cwd: _, ...jiek } = {}\n  } = manifest\n  let { exports } = manifest\n  let includeIndex = false\n  if (typeof exports === 'string') {\n    includeIndex = true\n    exports = { '.': exports }\n  }\n  if (exports === undefined) {\n    exports = { '.': './src/index.ts' }\n  }\n  if (typeof exports === 'object') {\n    if (Array.isArray(exports) && exports.length > 0) {\n      includeIndex = true\n    } else {\n      includeIndex = !!(<Record<string, unknown>>exports)['.']\n    }\n  }\n  const inputs = Array.isArray(exports)\n    ? exports as string[]\n    : Object\n      .entries(<Record<string, unknown>>exports)\n      .reduce((acc, [key, value]) => {\n        if (typeof value === 'string') return key === '.'\n          ? [value, ...acc]\n          : acc.concat(value)\n        if (Array.isArray(value)) return acc.concat(value)\n\n        throw new TypeError(`Unexpected value type for key \"${key}\" in exports, expected string, got ${typeof value}`)\n      }, [] as string[])\n  if (inputs.length === 0)\n    throw new Error('No inputs found')\n\n  const absoluteInputs = inputs.map(input => path.isAbsolute(input)\n    ? input\n    : path.resolve(cwd, input)\n  )\n  let cDir = path.dirname(absoluteInputs[0])\n  if (absoluteInputs.length > 1) {\n    cDir = commondir(absoluteInputs, cwd)\n  }\n  const resolvedInputs = absoluteInputs.map(input => {\n    return path.relative(cDir, input)\n  })\n  return {\n    ...manifest,\n    ...pkger({\n      cwd,\n      noIndex: !includeIndex,\n      source: path.relative(cwd, cDir),\n      inputs: resolvedInputs,\n      ...jiek\n    })\n  }\n}\n","import path from 'node:path'\n\nexport function commondir(files: string[], cwd = process.cwd()): string {\n  const resolvedFiles = files.map(file => {\n    if (path.isAbsolute(file)) return file\n    return path.resolve(cwd, file)\n  })\n  const sep = '/'\n  const [first = ''] = resolvedFiles\n  const parts = first.split(sep)\n  let common = ''\n  for (let i = 0; i < parts.length; i++) {\n    const segment = parts[i]\n    if (resolvedFiles.every(file => file.startsWith(common + segment))) {\n      common += segment + sep\n    } else {\n      break\n    }\n  }\n  return common\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { bump, type BumperType } from '@jiek/utils/bumper'\nimport * as childProcess from 'child_process'\nimport { program } from 'commander'\nimport detectIndent from 'detect-indent'\nimport { applyEdits, modify } from 'jsonc-parser'\n\nimport { actionDone, actionRestore } from '../inner'\nimport { mergePackageJson } from '../merge-package-json'\nimport { getSelectedProjectsGraph } from '../utils/filterSupport'\n\nprogram\n  .command('publish')\n  .aliases(['pub', 'p'])\n  .option('-b, --bumper <bumper>', 'bump version', 'patch')\n  .option('-p, --preview', 'preview publish')\n  .action(async ({ preview, bumper, ...options }: {\n    preview?: boolean\n    bumper: BumperType\n  }) => {\n    actionRestore()\n\n    const { value = {} } = await getSelectedProjectsGraph() ?? {}\n    const selectedProjectsGraphEntries = Object.entries(value)\n    if (selectedProjectsGraphEntries.length === 0) {\n      throw new Error('no packages selected')\n    }\n    const mainfests = selectedProjectsGraphEntries\n      .map(([dir, manifest]) => [\n        dir, mergePackageJson(manifest, dir)\n      ] as const)\n    const passArgs = Object\n      .entries(options)\n      .reduce((acc, [key, value]) => {\n        if (value) {\n          acc.push(`--${key}`, value as string)\n        }\n        return acc\n      }, [] as string[])\n    for (const [dir, manifest] of mainfests) {\n      const oldJSONString = fs.readFileSync(path.join(dir, 'package.json'), 'utf-8')\n      const oldJSON = JSON.parse(oldJSONString) ?? '0.0.0'\n      const newVersion = bump(oldJSON.version, bumper)\n      // TODO detectIndent by editorconfig\n      const { indent = '    ' } = detectIndent(oldJSONString)\n      const formattingOptions = {\n        tabSize: indent.length,\n        insertSpaces: true\n      }\n      let newJSONString = oldJSONString\n      newJSONString = applyEdits(newJSONString, modify(\n        newJSONString, ['version'], newVersion, { formattingOptions }\n      ))\n      for (const [key, value] of Object.entries(manifest)) {\n        if (JSON.stringify(value) === JSON.stringify(oldJSON[key])) continue\n\n        newJSONString = applyEdits(newJSONString, modify(\n          newJSONString, ['publishConfig', key], value, { formattingOptions }\n        ))\n      }\n      try {\n        fs.renameSync(path.join(dir, 'package.json'), path.join(dir, 'package.json.bak'))\n        fs.writeFileSync(path.join(dir, 'package.json'), newJSONString)\n        console.log(newJSONString)\n        if (preview) {\n          console.warn('preview mode')\n          continue\n        }\n        childProcess.execSync(['pnpm', 'publish', '--access', 'public', '--no-git-checks', ...passArgs].join(' '), {\n          cwd: dir,\n          stdio: 'inherit'\n        })\n        const modifyVersionPackageJSON = applyEdits(oldJSONString, modify(oldJSONString, ['version'], newVersion, {}))\n        fs.writeFileSync(path.join(dir, 'package.json.bak'), modifyVersionPackageJSON)\n      } finally {\n        fs.unlinkSync(path.join(dir, 'package.json'))\n        fs.renameSync(path.join(dir, 'package.json.bak'), path.join(dir, 'package.json'))\n      }\n    }\n    actionDone()\n  })\n","import * as childProcess from 'node:child_process'\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport { program } from 'commander'\n\nimport { actionDone, actionRestore } from '../inner'\nimport { mergePackageJson } from '../merge-package-json'\nimport { getSelectedProjectsGraph } from '../utils/filterSupport'\n\nconst FILE_TEMPLATE = (manifest: unknown) => `\nconst pkg = ${JSON.stringify(manifest, null, 2)}\nconst { jiek = {} } = pkg\nconst templateArg = jiek.templateArgFilePath\n  ? require.resolve(jiek.templateArgFilePath)\n  : {\n    styled: jiek.styled\n  }\nmodule.exports = require('jiek/rollup').template(templateArg, pkg)\n`.trimStart()\n\nprogram\n  .command('build')\n  .action(async () => {\n    actionRestore()\n    const {\n      wd, value = {}\n    } = await getSelectedProjectsGraph() ?? {}\n\n    if (Object.keys(value).length === 0) {\n      throw new Error('no package found')\n    }\n    const jiekTempDir = (...paths: string[]) => path.resolve(wd, 'node_modules/.jiek', ...paths)\n    if (!fs.existsSync(jiekTempDir())) fs.mkdirSync(jiekTempDir())\n\n    const rollupBinaryPath = require.resolve('rollup')\n      .replace(/dist\\/rollup.js$/, 'dist/bin/rollup')\n    let i = 0\n    for (const [dir, manifest] of Object.entries(value)) {\n      const newManifest = mergePackageJson(manifest, dir)\n      // TODO support auto build child packages in workspaces\n      const escapeManifestName = manifest.name?.replace(/^@/g, '').replace(/\\//g, '+')\n      const configFile = jiekTempDir(\n        `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`\n      )\n      fs.writeFileSync(configFile, FILE_TEMPLATE(newManifest))\n      let prefix = ''\n      if (process.env.NODE_ENV === 'test') {\n        const registerPath = require.resolve('esbuild-register')\n        const loaderPath = require.resolve('esbuild-register/loader')\n        prefix = `node --import ${registerPath} -r ${loaderPath} `\n      }\n      // TODO replace with `spawn` to support watch mode\n      childProcess.execSync(`${prefix}${rollupBinaryPath} -c ${configFile}`, {\n        cwd: dir, stdio: 'inherit'\n      })\n    }\n\n    actionDone()\n  })\n","import './utils/filterSupport'\nimport './commands/publish'\nimport './commands/build'\n\nimport { program } from 'commander'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pkg = require('../package.json')\n\nprogram\n  .version(pkg.version)\n  .description(pkg.description)\n  .option('--root <root>', 'root path')\n\nprogram.parse(process.argv)\n"],"names":["resolve","type","require","async","getSelectedProjectsGraph","filter","program","getOptionValue","rootOption","root","path","isAbsolute","process","cwd","wd","notWorkspace","getWorkspaceDir","e","message","pnpmWorkspaceFilePath","default","pnpmWorkspaceFileContent","fs","readFileSync","pnpmWorkspace","load","Error","existsSync","packageJSON","JSON","parse","name","selectedProjectsGraph","filterPackagesFromDir","followProdDepsOnly","prefix","workspaceDir","patterns","packages","value","Object","entries","reduce","acc","key","package","manifest","actionDone","actionRestore","Promise","r","mergePackageJson","jiek","_","exports","includeIndex","Array","isArray","length","inputs","concat","TypeError","absoluteInputs","map","input","cDir","dirname","files","resolvedFiles","file","first","parts","split","common","i","segment","every","startsWith","commondir","resolvedInputs","relative","pkger","noIndex","source","option","command","aliases","action","preview","bumper","options","selectedProjectsGraphEntries","mainfests","dir","passArgs","push","oldJSONString","join","oldJSON","newVersion","bump","version","indent","detectIndent","formattingOptions","tabSize","insertSpaces","newJSONString","applyEdits","modify","stringify","renameSync","writeFileSync","console","log","warn","childProcess","execSync","stdio","modifyVersionPackageJSON","unlinkSync","FILE_TEMPLATE","trimStart","commander","keys","jiekTempDir","paths","mkdirSync","rollupBinaryPath","replace","newManifest","escapeManifestName","configFile","env","NODE_ENV","pkg","description","argv"],"mappings":"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"}
         | 
| 1 | 
            +
            {"version":3,"file":"index.iife.min.js","sources":["../src/index.ts"],"sourcesContent":["import type { Config } from './base'\n\nexport const defineConfig = (config: Config) => config\n\nexport * from './base'\n"],"names":["config"],"mappings":"wDAE6BA,GAAmBA"}
         |