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
    
        package/dist/cli.iife.js
    ADDED
    
    | @@ -0,0 +1,658 @@ | |
| 1 | 
            +
            (function (fs, path, filterWorkspacePackages, commander, jsYaml, getWorkspaceDir, childProcess, pkger, detectIndent, inquirer, jsoncParser, micromatch, bumper, childProcess$1) {
         | 
| 2 | 
            +
              'use strict';
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              function _interopNamespace(e) {
         | 
| 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 | 
            +
              }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              var fs__default = /*#__PURE__*/_interopDefault(fs);
         | 
| 25 | 
            +
              var path__default = /*#__PURE__*/_interopDefault(path);
         | 
| 26 | 
            +
              var childProcess__namespace = /*#__PURE__*/_interopNamespace(childProcess);
         | 
| 27 | 
            +
              var detectIndent__default = /*#__PURE__*/_interopDefault(detectIndent);
         | 
| 28 | 
            +
              var inquirer__default = /*#__PURE__*/_interopDefault(inquirer);
         | 
| 29 | 
            +
              var childProcess__namespace$1 = /*#__PURE__*/_interopNamespace(childProcess$1);
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              let root;
         | 
| 32 | 
            +
              function getRoot() {
         | 
| 33 | 
            +
                if (root)
         | 
| 34 | 
            +
                  return root;
         | 
| 35 | 
            +
                const rootOption = commander.program.getOptionValue("root");
         | 
| 36 | 
            +
                root = rootOption ? path__default.default.isAbsolute(rootOption) ? rootOption : path__default.default.resolve(process.cwd(), rootOption) : process.cwd();
         | 
| 37 | 
            +
                return root;
         | 
| 38 | 
            +
              }
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              let wd;
         | 
| 41 | 
            +
              let notWorkspace = false;
         | 
| 42 | 
            +
              function getWD() {
         | 
| 43 | 
            +
                if (wd)
         | 
| 44 | 
            +
                  return { wd, notWorkspace };
         | 
| 45 | 
            +
                const root = getRoot();
         | 
| 46 | 
            +
                try {
         | 
| 47 | 
            +
                  wd = getWorkspaceDir.getWorkspaceDir(root, type);
         | 
| 48 | 
            +
                } catch (e) {
         | 
| 49 | 
            +
                  if ("message" in e && e.message === "workspace root not found") {
         | 
| 50 | 
            +
                    wd = root;
         | 
| 51 | 
            +
                    notWorkspace = true;
         | 
| 52 | 
            +
                  } else {
         | 
| 53 | 
            +
                    throw e;
         | 
| 54 | 
            +
                  }
         | 
| 55 | 
            +
                }
         | 
| 56 | 
            +
                return { wd, notWorkspace };
         | 
| 57 | 
            +
              }
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              let type = "";
         | 
| 60 | 
            +
              try {
         | 
| 61 | 
            +
                require.resolve("@pnpm/filter-workspace-packages");
         | 
| 62 | 
            +
                type = "pnpm";
         | 
| 63 | 
            +
              } catch {
         | 
| 64 | 
            +
              }
         | 
| 65 | 
            +
              if (type !== "") {
         | 
| 66 | 
            +
                commander.program.option("-f, --filter <filter>", "filter packages");
         | 
| 67 | 
            +
              }
         | 
| 68 | 
            +
              async function getSelectedProjectsGraph() {
         | 
| 69 | 
            +
                let filter = commander.program.getOptionValue("filter");
         | 
| 70 | 
            +
                const root = getRoot();
         | 
| 71 | 
            +
                const { wd, notWorkspace } = getWD();
         | 
| 72 | 
            +
                if (!notWorkspace && type === "pnpm") {
         | 
| 73 | 
            +
                  const pnpmWorkspaceFilePath = path__default.default.resolve(wd, "pnpm-workspace.yaml");
         | 
| 74 | 
            +
                  const pnpmWorkspaceFileContent = fs__default.default.readFileSync(pnpmWorkspaceFilePath, "utf-8");
         | 
| 75 | 
            +
                  const pnpmWorkspace = jsYaml.load(pnpmWorkspaceFileContent);
         | 
| 76 | 
            +
                  if (root === wd && !filter) {
         | 
| 77 | 
            +
                    throw new Error("root path is workspace root, please provide a filter");
         | 
| 78 | 
            +
                  }
         | 
| 79 | 
            +
                  if (root !== wd && !filter) {
         | 
| 80 | 
            +
                    const packageJSONIsExist = fs__default.default.existsSync(path__default.default.resolve(root, "package.json"));
         | 
| 81 | 
            +
                    if (!packageJSONIsExist) {
         | 
| 82 | 
            +
                      throw new Error("root path is not workspace root, please provide a filter");
         | 
| 83 | 
            +
                    }
         | 
| 84 | 
            +
                    const packageJSON = JSON.parse(fs__default.default.readFileSync(path__default.default.resolve(root, "package.json"), "utf-8"));
         | 
| 85 | 
            +
                    if (!packageJSON.name) {
         | 
| 86 | 
            +
                      throw new Error("root path is not workspace root, please provide a filter");
         | 
| 87 | 
            +
                    }
         | 
| 88 | 
            +
                    filter = packageJSON.name;
         | 
| 89 | 
            +
                  }
         | 
| 90 | 
            +
                  const { selectedProjectsGraph } = await filterWorkspacePackages.filterPackagesFromDir(wd, [{
         | 
| 91 | 
            +
                    filter: filter ?? "",
         | 
| 92 | 
            +
                    followProdDepsOnly: true
         | 
| 93 | 
            +
                  }], {
         | 
| 94 | 
            +
                    prefix: root,
         | 
| 95 | 
            +
                    workspaceDir: wd,
         | 
| 96 | 
            +
                    patterns: pnpmWorkspace.packages
         | 
| 97 | 
            +
                  });
         | 
| 98 | 
            +
                  return {
         | 
| 99 | 
            +
                    wd,
         | 
| 100 | 
            +
                    root,
         | 
| 101 | 
            +
                    value: Object.entries(selectedProjectsGraph).reduce((acc, [key, value]) => {
         | 
| 102 | 
            +
                      acc[key] = value.package.manifest;
         | 
| 103 | 
            +
                      return acc;
         | 
| 104 | 
            +
                    }, {})
         | 
| 105 | 
            +
                  };
         | 
| 106 | 
            +
                }
         | 
| 107 | 
            +
                return {
         | 
| 108 | 
            +
                  wd,
         | 
| 109 | 
            +
                  root,
         | 
| 110 | 
            +
                  value: {
         | 
| 111 | 
            +
                    [wd]: JSON.parse(fs__default.default.readFileSync(path__default.default.resolve(wd, "package.json"), "utf-8"))
         | 
| 112 | 
            +
                  }
         | 
| 113 | 
            +
                };
         | 
| 114 | 
            +
              }
         | 
| 115 | 
            +
             | 
| 116 | 
            +
              let resolve;
         | 
| 117 | 
            +
              function actionDone() {
         | 
| 118 | 
            +
                resolve();
         | 
| 119 | 
            +
              }
         | 
| 120 | 
            +
              function actionRestore() {
         | 
| 121 | 
            +
                new Promise((r) => resolve = r);
         | 
| 122 | 
            +
              }
         | 
| 123 | 
            +
             | 
| 124 | 
            +
              function commondir(files, cwd = process.cwd()) {
         | 
| 125 | 
            +
                const resolvedFiles = files.map((file) => {
         | 
| 126 | 
            +
                  if (path__default.default.isAbsolute(file))
         | 
| 127 | 
            +
                    return file;
         | 
| 128 | 
            +
                  return path__default.default.resolve(cwd, file);
         | 
| 129 | 
            +
                });
         | 
| 130 | 
            +
                const sep = "/";
         | 
| 131 | 
            +
                const [first = ""] = resolvedFiles;
         | 
| 132 | 
            +
                const parts = first.split(sep);
         | 
| 133 | 
            +
                let common = "";
         | 
| 134 | 
            +
                for (let i = 0; i < parts.length; i++) {
         | 
| 135 | 
            +
                  const segment = parts[i];
         | 
| 136 | 
            +
                  if (resolvedFiles.every((file) => file.startsWith(common + segment))) {
         | 
| 137 | 
            +
                    common += segment + sep;
         | 
| 138 | 
            +
                  } else {
         | 
| 139 | 
            +
                    break;
         | 
| 140 | 
            +
                  }
         | 
| 141 | 
            +
                }
         | 
| 142 | 
            +
                return common;
         | 
| 143 | 
            +
              }
         | 
| 144 | 
            +
             | 
| 145 | 
            +
              function mergePackageJson(manifest, cwd) {
         | 
| 146 | 
            +
                const {
         | 
| 147 | 
            +
                  jiek: { cwd: _, ...jiek } = {}
         | 
| 148 | 
            +
                } = manifest;
         | 
| 149 | 
            +
                let { exports } = manifest;
         | 
| 150 | 
            +
                let includeIndex = false;
         | 
| 151 | 
            +
                if (typeof exports === "string") {
         | 
| 152 | 
            +
                  includeIndex = true;
         | 
| 153 | 
            +
                  exports = { ".": exports };
         | 
| 154 | 
            +
                }
         | 
| 155 | 
            +
                if (exports === void 0) {
         | 
| 156 | 
            +
                  exports = { ".": "./src/index.ts" };
         | 
| 157 | 
            +
                }
         | 
| 158 | 
            +
                if (typeof exports === "object") {
         | 
| 159 | 
            +
                  if (Array.isArray(exports) && exports.length > 0) {
         | 
| 160 | 
            +
                    includeIndex = true;
         | 
| 161 | 
            +
                  } else {
         | 
| 162 | 
            +
                    includeIndex = !!exports["."];
         | 
| 163 | 
            +
                  }
         | 
| 164 | 
            +
                }
         | 
| 165 | 
            +
                const inputs = Array.isArray(exports) ? exports : Object.entries(exports).reduce((acc, [key, value]) => {
         | 
| 166 | 
            +
                  if (typeof value === "string")
         | 
| 167 | 
            +
                    return key === "." ? [value, ...acc] : acc.concat(value);
         | 
| 168 | 
            +
                  if (Array.isArray(value))
         | 
| 169 | 
            +
                    return acc.concat(value);
         | 
| 170 | 
            +
                  throw new TypeError(`Unexpected value type for key "${key}" in exports, expected string, got ${typeof value}`);
         | 
| 171 | 
            +
                }, []);
         | 
| 172 | 
            +
                if (inputs.length === 0)
         | 
| 173 | 
            +
                  throw new Error("No inputs found");
         | 
| 174 | 
            +
                const absoluteInputs = inputs.map(
         | 
| 175 | 
            +
                  (input) => path__default.default.isAbsolute(input) ? input : path__default.default.resolve(cwd, input)
         | 
| 176 | 
            +
                );
         | 
| 177 | 
            +
                let cDir = path__default.default.dirname(absoluteInputs[0]);
         | 
| 178 | 
            +
                if (absoluteInputs.length > 1) {
         | 
| 179 | 
            +
                  cDir = commondir(absoluteInputs, cwd);
         | 
| 180 | 
            +
                }
         | 
| 181 | 
            +
                const resolvedInputs = absoluteInputs.map((input) => {
         | 
| 182 | 
            +
                  return path__default.default.relative(cDir, input);
         | 
| 183 | 
            +
                });
         | 
| 184 | 
            +
                return {
         | 
| 185 | 
            +
                  ...manifest,
         | 
| 186 | 
            +
                  ...pkger.pkger({
         | 
| 187 | 
            +
                    cwd,
         | 
| 188 | 
            +
                    noIndex: !includeIndex,
         | 
| 189 | 
            +
                    source: path__default.default.relative(cwd, cDir),
         | 
| 190 | 
            +
                    inputs: resolvedInputs,
         | 
| 191 | 
            +
                    ...jiek
         | 
| 192 | 
            +
                  })
         | 
| 193 | 
            +
                };
         | 
| 194 | 
            +
              }
         | 
| 195 | 
            +
             | 
| 196 | 
            +
              function packageIsExist(name) {
         | 
| 197 | 
            +
                try {
         | 
| 198 | 
            +
                  require.resolve(name);
         | 
| 199 | 
            +
                  return true;
         | 
| 200 | 
            +
                } catch (e) {
         | 
| 201 | 
            +
                  return false;
         | 
| 202 | 
            +
                }
         | 
| 203 | 
            +
              }
         | 
| 204 | 
            +
              let tsRegisterName;
         | 
| 205 | 
            +
              const registers = [
         | 
| 206 | 
            +
                process.env.JIEK_TS_REGISTER,
         | 
| 207 | 
            +
                "esbuild-register",
         | 
| 208 | 
            +
                "@swc-node/register",
         | 
| 209 | 
            +
                "ts-node/register"
         | 
| 210 | 
            +
              ].filter(Boolean);
         | 
| 211 | 
            +
              for (const register of registers) {
         | 
| 212 | 
            +
                if (packageIsExist(register)) {
         | 
| 213 | 
            +
                  tsRegisterName = register;
         | 
| 214 | 
            +
                  break;
         | 
| 215 | 
            +
                }
         | 
| 216 | 
            +
              }
         | 
| 217 | 
            +
             | 
| 218 | 
            +
              const FILE_TEMPLATE = (manifest) => `
         | 
| 219 | 
            +
            const pkg = ${JSON.stringify(manifest, null, 2)}
         | 
| 220 | 
            +
            const { jiek = {} } = pkg
         | 
| 221 | 
            +
            const templateArg = jiek.templateArgFilePath
         | 
| 222 | 
            +
              ? require.resolve(jiek.templateArgFilePath)
         | 
| 223 | 
            +
              : {
         | 
| 224 | 
            +
                styled: jiek.styled
         | 
| 225 | 
            +
              }
         | 
| 226 | 
            +
            module.exports = require('jiek/rollup').template(templateArg, pkg)
         | 
| 227 | 
            +
            `.trimStart();
         | 
| 228 | 
            +
              commander.program.command("build").action(async () => {
         | 
| 229 | 
            +
                actionRestore();
         | 
| 230 | 
            +
                const {
         | 
| 231 | 
            +
                  wd,
         | 
| 232 | 
            +
                  value = {}
         | 
| 233 | 
            +
                } = await getSelectedProjectsGraph() ?? {};
         | 
| 234 | 
            +
                if (Object.keys(value).length === 0) {
         | 
| 235 | 
            +
                  throw new Error("no package found");
         | 
| 236 | 
            +
                }
         | 
| 237 | 
            +
                const jiekTempDir = (...paths) => path__default.default.resolve(wd, "node_modules/.jiek", ...paths);
         | 
| 238 | 
            +
                if (!fs__default.default.existsSync(jiekTempDir()))
         | 
| 239 | 
            +
                  fs__default.default.mkdirSync(jiekTempDir());
         | 
| 240 | 
            +
                const rollupBinaryPath = require.resolve("rollup").replace(/dist\/rollup.js$/, "dist/bin/rollup");
         | 
| 241 | 
            +
                let i = 0;
         | 
| 242 | 
            +
                for (const [dir, manifest] of Object.entries(value)) {
         | 
| 243 | 
            +
                  const newManifest = mergePackageJson(manifest, dir);
         | 
| 244 | 
            +
                  const escapeManifestName = manifest.name?.replace(/^@/g, "").replace(/\//g, "+");
         | 
| 245 | 
            +
                  const configFile = jiekTempDir(
         | 
| 246 | 
            +
                    `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
         | 
| 247 | 
            +
                  );
         | 
| 248 | 
            +
                  fs__default.default.writeFileSync(configFile, FILE_TEMPLATE(newManifest));
         | 
| 249 | 
            +
                  let prefix = "";
         | 
| 250 | 
            +
                  if (tsRegisterName) {
         | 
| 251 | 
            +
                    prefix = `node -r ${tsRegisterName} `;
         | 
| 252 | 
            +
                  }
         | 
| 253 | 
            +
                  childProcess__namespace.execSync(`${prefix}${rollupBinaryPath} -c ${configFile}`, {
         | 
| 254 | 
            +
                    cwd: dir,
         | 
| 255 | 
            +
                    stdio: "inherit"
         | 
| 256 | 
            +
                  });
         | 
| 257 | 
            +
                }
         | 
| 258 | 
            +
                actionDone();
         | 
| 259 | 
            +
              });
         | 
| 260 | 
            +
             | 
| 261 | 
            +
              let configName = "jiek.config";
         | 
| 262 | 
            +
              function getConfigPath(root) {
         | 
| 263 | 
            +
                const isSupportTsLoader = !!tsRegisterName;
         | 
| 264 | 
            +
                function configWithExtIsExist(ext) {
         | 
| 265 | 
            +
                  const filenames = [
         | 
| 266 | 
            +
                    path__default.default.resolve(root, `${configName}.${ext}`),
         | 
| 267 | 
            +
                    path__default.default.resolve(root, `.${configName}.${ext}`)
         | 
| 268 | 
            +
                  ];
         | 
| 269 | 
            +
                  for (const filename of filenames) {
         | 
| 270 | 
            +
                    if (fs__default.default.existsSync(filename) && fs__default.default.lstatSync(filename).isFile()) {
         | 
| 271 | 
            +
                      return filename;
         | 
| 272 | 
            +
                    }
         | 
| 273 | 
            +
                  }
         | 
| 274 | 
            +
                  return;
         | 
| 275 | 
            +
                }
         | 
| 276 | 
            +
                configName = configWithExtIsExist("js") ?? configName;
         | 
| 277 | 
            +
                configName = configWithExtIsExist("json") ?? configName;
         | 
| 278 | 
            +
                configName = configWithExtIsExist("yaml") ?? configName;
         | 
| 279 | 
            +
                if (isSupportTsLoader) {
         | 
| 280 | 
            +
                  configName = configWithExtIsExist("ts") ?? configName;
         | 
| 281 | 
            +
                }
         | 
| 282 | 
            +
                return path__default.default.resolve(root, configName);
         | 
| 283 | 
            +
              }
         | 
| 284 | 
            +
              function loadConfig() {
         | 
| 285 | 
            +
                const { wd: root, notWorkspace } = getWD();
         | 
| 286 | 
            +
                if (notWorkspace)
         | 
| 287 | 
            +
                  throw new Error("not in workspace");
         | 
| 288 | 
            +
                let configPath = commander.program.getOptionValue("configPath");
         | 
| 289 | 
            +
                if (!configPath) {
         | 
| 290 | 
            +
                  configPath = getConfigPath(root);
         | 
| 291 | 
            +
                } else {
         | 
| 292 | 
            +
                  if (!fs__default.default.existsSync(configPath))
         | 
| 293 | 
            +
                    throw new Error(`config file not found: ${configPath}`);
         | 
| 294 | 
            +
                  if (!path__default.default.isAbsolute(configPath))
         | 
| 295 | 
            +
                    configPath = path__default.default.resolve(root, configPath);
         | 
| 296 | 
            +
                }
         | 
| 297 | 
            +
                const ext = path__default.default.extname(configPath);
         | 
| 298 | 
            +
                let module;
         | 
| 299 | 
            +
                switch (ext) {
         | 
| 300 | 
            +
                  case ".js":
         | 
| 301 | 
            +
                    module = require(configPath);
         | 
| 302 | 
            +
                    break;
         | 
| 303 | 
            +
                  case ".json":
         | 
| 304 | 
            +
                    return require(configPath);
         | 
| 305 | 
            +
                  case ".yaml":
         | 
| 306 | 
            +
                    return jsYaml.load(fs__default.default.readFileSync(configPath, "utf-8"));
         | 
| 307 | 
            +
                  case ".ts":
         | 
| 308 | 
            +
                    if (tsRegisterName) {
         | 
| 309 | 
            +
                      require(tsRegisterName);
         | 
| 310 | 
            +
                      module = require(configPath);
         | 
| 311 | 
            +
                      break;
         | 
| 312 | 
            +
                    }
         | 
| 313 | 
            +
                    throw new Error(
         | 
| 314 | 
            +
                      "ts config file is not supported without ts register, please install esbuild-register or set JIEK_TS_REGISTER env for custom ts register"
         | 
| 315 | 
            +
                    );
         | 
| 316 | 
            +
                  case ".config":
         | 
| 317 | 
            +
                    module = {};
         | 
| 318 | 
            +
                    break;
         | 
| 319 | 
            +
                  default:
         | 
| 320 | 
            +
                    throw new Error(`unsupported config file type: ${ext}`);
         | 
| 321 | 
            +
                }
         | 
| 322 | 
            +
                if (!module)
         | 
| 323 | 
            +
                  throw new Error("config file is empty");
         | 
| 324 | 
            +
                return module.default ?? module;
         | 
| 325 | 
            +
              }
         | 
| 326 | 
            +
             | 
| 327 | 
            +
              const PACKAGE_JSON_TEMPLATE = `{
         | 
| 328 | 
            +
              "name": "",
         | 
| 329 | 
            +
              "version": "0.0.1",
         | 
| 330 | 
            +
              "description": "",
         | 
| 331 | 
            +
              "license": "",
         | 
| 332 | 
            +
              "author": "",
         | 
| 333 | 
            +
              "files": ["dist"],
         | 
| 334 | 
            +
              "exports": {
         | 
| 335 | 
            +
                ".": "./src/index.ts"
         | 
| 336 | 
            +
              },
         | 
| 337 | 
            +
              "scripts": {
         | 
| 338 | 
            +
              },
         | 
| 339 | 
            +
              "homepage": "",
         | 
| 340 | 
            +
              "repository": "",
         | 
| 341 | 
            +
              "bugs": ""
         | 
| 342 | 
            +
            }`.trimStart();
         | 
| 343 | 
            +
              const README_TEMPLATE = `# $name
         | 
| 344 | 
            +
             | 
| 345 | 
            +
            ## Installation
         | 
| 346 | 
            +
             | 
| 347 | 
            +
            \`\`\`bash
         | 
| 348 | 
            +
            npm install $name
         | 
| 349 | 
            +
            # or
         | 
| 350 | 
            +
            pnpm install $name
         | 
| 351 | 
            +
            # or
         | 
| 352 | 
            +
            yarn add $name
         | 
| 353 | 
            +
            \`\`\`
         | 
| 354 | 
            +
             | 
| 355 | 
            +
            ## Usage
         | 
| 356 | 
            +
             | 
| 357 | 
            +
             | 
| 358 | 
            +
            ## License
         | 
| 359 | 
            +
             | 
| 360 | 
            +
            $license
         | 
| 361 | 
            +
            `.trimStart();
         | 
| 362 | 
            +
              function getTemplateStr(wd, template) {
         | 
| 363 | 
            +
                let templateString = template ?? PACKAGE_JSON_TEMPLATE;
         | 
| 364 | 
            +
                let isTemplateFile = false;
         | 
| 365 | 
            +
                try {
         | 
| 366 | 
            +
                  if (template)
         | 
| 367 | 
            +
                    JSON.parse(template);
         | 
| 368 | 
            +
                } catch (e) {
         | 
| 369 | 
            +
                  isTemplateFile = true;
         | 
| 370 | 
            +
                }
         | 
| 371 | 
            +
                if (isTemplateFile) {
         | 
| 372 | 
            +
                  const templatePath = path__default.default.resolve(wd, template);
         | 
| 373 | 
            +
                  templateString = fs__default.default.readFileSync(templatePath, "utf-8");
         | 
| 374 | 
            +
                }
         | 
| 375 | 
            +
                return templateString;
         | 
| 376 | 
            +
              }
         | 
| 377 | 
            +
              const wdCache = /* @__PURE__ */ new Map();
         | 
| 378 | 
            +
              function getWDPackageJSONFiled(wd, field) {
         | 
| 379 | 
            +
                if (wdCache.has(wd)) {
         | 
| 380 | 
            +
                  return wdCache.get(wd)[field];
         | 
| 381 | 
            +
                }
         | 
| 382 | 
            +
                const packageJSONPath = path__default.default.resolve(wd, "package.json");
         | 
| 383 | 
            +
                const packageJSON = JSON.parse(fs__default.default.readFileSync(packageJSONPath, "utf-8"));
         | 
| 384 | 
            +
                wdCache.set(wd, packageJSON);
         | 
| 385 | 
            +
                return packageJSON[field];
         | 
| 386 | 
            +
              }
         | 
| 387 | 
            +
              async function getName(named, name, {
         | 
| 388 | 
            +
                wd,
         | 
| 389 | 
            +
                cwd,
         | 
| 390 | 
            +
                workspaceName
         | 
| 391 | 
            +
              }) {
         | 
| 392 | 
            +
                const relativePath = cwd.replace(`${wd}/`, "");
         | 
| 393 | 
            +
                let basename = path__default.default.basename(cwd);
         | 
| 394 | 
            +
                if (typeof named === "function") {
         | 
| 395 | 
            +
                  return named(name, {
         | 
| 396 | 
            +
                    full: wd,
         | 
| 397 | 
            +
                    relative: cwd
         | 
| 398 | 
            +
                  });
         | 
| 399 | 
            +
                }
         | 
| 400 | 
            +
                let isParentMatched = false;
         | 
| 401 | 
            +
                let matchedKey;
         | 
| 402 | 
            +
                let matchedRule;
         | 
| 403 | 
            +
                if (typeof named === "object") {
         | 
| 404 | 
            +
                  const isWD = cwd === wd;
         | 
| 405 | 
            +
                  if (isWD) {
         | 
| 406 | 
            +
                    const { rule } = await inquirer__default.default.prompt({
         | 
| 407 | 
            +
                      type: "list",
         | 
| 408 | 
            +
                      name: "rule",
         | 
| 409 | 
            +
                      message: "choose a rule",
         | 
| 410 | 
            +
                      default: "default",
         | 
| 411 | 
            +
                      choices: ["default"].concat(Object.keys(named))
         | 
| 412 | 
            +
                    });
         | 
| 413 | 
            +
                    if (rule !== "default") {
         | 
| 414 | 
            +
                      matchedKey = rule;
         | 
| 415 | 
            +
                      matchedRule = named[rule];
         | 
| 416 | 
            +
                    }
         | 
| 417 | 
            +
                  } else
         | 
| 418 | 
            +
                    for (const [key, value] of Object.entries(named)) {
         | 
| 419 | 
            +
                      if (micromatch.isMatch(relativePath, key)) {
         | 
| 420 | 
            +
                        matchedKey = key;
         | 
| 421 | 
            +
                        matchedRule = value;
         | 
| 422 | 
            +
                        break;
         | 
| 423 | 
            +
                      }
         | 
| 424 | 
            +
                      if (micromatch.isMatch(`${relativePath}/jiek_ignore_dont_use_same_file_name`, key)) {
         | 
| 425 | 
            +
                        isParentMatched = true;
         | 
| 426 | 
            +
                        matchedKey = key;
         | 
| 427 | 
            +
                        matchedRule = value;
         | 
| 428 | 
            +
                        break;
         | 
| 429 | 
            +
                      }
         | 
| 430 | 
            +
                    }
         | 
| 431 | 
            +
                }
         | 
| 432 | 
            +
                if (!matchedRule) {
         | 
| 433 | 
            +
                  matchedKey = "packages/*";
         | 
| 434 | 
            +
                  matchedRule = `@${workspaceName}/$basename`;
         | 
| 435 | 
            +
                }
         | 
| 436 | 
            +
                if (!matchedRule)
         | 
| 437 | 
            +
                  throw new Error("no matched rule");
         | 
| 438 | 
            +
                if (!name && isParentMatched) {
         | 
| 439 | 
            +
                  basename = await inquirer__default.default.prompt({
         | 
| 440 | 
            +
                    type: "input",
         | 
| 441 | 
            +
                    name: "name",
         | 
| 442 | 
            +
                    message: `the matched rule is \`${String(matchedRule)}\`, please input the basename
         | 
| 443 | 
            +
            `
         | 
| 444 | 
            +
                  }).then(({ name: name2 }) => name2);
         | 
| 445 | 
            +
                }
         | 
| 446 | 
            +
                if (typeof matchedRule === "function") {
         | 
| 447 | 
            +
                  return matchedRule(name, {
         | 
| 448 | 
            +
                    full: wd,
         | 
| 449 | 
            +
                    relative: cwd,
         | 
| 450 | 
            +
                    basename
         | 
| 451 | 
            +
                  });
         | 
| 452 | 
            +
                }
         | 
| 453 | 
            +
                if (typeof matchedRule === "string") {
         | 
| 454 | 
            +
                  const dirName = name ?? basename;
         | 
| 455 | 
            +
                  return [
         | 
| 456 | 
            +
                    matchedRule.replace(/\$basename/g, dirName),
         | 
| 457 | 
            +
                    matchedKey?.replace(/\/\*$/g, `/${dirName}`)
         | 
| 458 | 
            +
                  ];
         | 
| 459 | 
            +
                }
         | 
| 460 | 
            +
                throw new Error("no matched rule");
         | 
| 461 | 
            +
              }
         | 
| 462 | 
            +
              commander.program.command("init [name]").option("-t, --template <template>", "the package.json template file path or file content").action(async () => {
         | 
| 463 | 
            +
                const [, name] = commander.program.args;
         | 
| 464 | 
            +
                const cwd = process.cwd();
         | 
| 465 | 
            +
                const { init = {} } = loadConfig() ?? {};
         | 
| 466 | 
            +
                const { wd } = getWD();
         | 
| 467 | 
            +
                const workspaceName = path__default.default.basename(wd);
         | 
| 468 | 
            +
                const {
         | 
| 469 | 
            +
                  named,
         | 
| 470 | 
            +
                  template,
         | 
| 471 | 
            +
                  bug = {},
         | 
| 472 | 
            +
                  readme: _readme = README_TEMPLATE,
         | 
| 473 | 
            +
                  readmeTemplate
         | 
| 474 | 
            +
                } = init;
         | 
| 475 | 
            +
                const resolvedBug = {
         | 
| 476 | 
            +
                  template: "bug_report.yml",
         | 
| 477 | 
            +
                  labels: ["bug"],
         | 
| 478 | 
            +
                  ...bug
         | 
| 479 | 
            +
                };
         | 
| 480 | 
            +
                let readme = _readme;
         | 
| 481 | 
            +
                if (readmeTemplate) {
         | 
| 482 | 
            +
                  const readmeTemplatePath = path__default.default.resolve(wd, readmeTemplate);
         | 
| 483 | 
            +
                  readme = fs__default.default.readFileSync(readmeTemplatePath, "utf-8");
         | 
| 484 | 
            +
                }
         | 
| 485 | 
            +
                const templateString = getTemplateStr(wd, template);
         | 
| 486 | 
            +
                const { indent = "    " } = detectIndent__default.default(templateString);
         | 
| 487 | 
            +
                const formattingOptions = {
         | 
| 488 | 
            +
                  tabSize: indent.length,
         | 
| 489 | 
            +
                  insertSpaces: true
         | 
| 490 | 
            +
                };
         | 
| 491 | 
            +
                const passFields = [
         | 
| 492 | 
            +
                  "license",
         | 
| 493 | 
            +
                  "author"
         | 
| 494 | 
            +
                ];
         | 
| 495 | 
            +
                let newJSONString = templateString;
         | 
| 496 | 
            +
                for (const field of passFields) {
         | 
| 497 | 
            +
                  newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 498 | 
            +
                    newJSONString,
         | 
| 499 | 
            +
                    [field],
         | 
| 500 | 
            +
                    getWDPackageJSONFiled(wd, field),
         | 
| 501 | 
            +
                    { formattingOptions }
         | 
| 502 | 
            +
                  ));
         | 
| 503 | 
            +
                }
         | 
| 504 | 
            +
                let [pkgName, pkgDir] = await getName(named, name, {
         | 
| 505 | 
            +
                  wd,
         | 
| 506 | 
            +
                  cwd,
         | 
| 507 | 
            +
                  workspaceName
         | 
| 508 | 
            +
                });
         | 
| 509 | 
            +
                if (!pkgDir) {
         | 
| 510 | 
            +
                  const { dir } = await inquirer__default.default.prompt({
         | 
| 511 | 
            +
                    type: "input",
         | 
| 512 | 
            +
                    name: "dir",
         | 
| 513 | 
            +
                    message: "package directory",
         | 
| 514 | 
            +
                    default: name
         | 
| 515 | 
            +
                  });
         | 
| 516 | 
            +
                  pkgDir = dir;
         | 
| 517 | 
            +
                }
         | 
| 518 | 
            +
                if (!pkgName) {
         | 
| 519 | 
            +
                  const { name: inputName } = await inquirer__default.default.prompt({
         | 
| 520 | 
            +
                    type: "input",
         | 
| 521 | 
            +
                    name: "name",
         | 
| 522 | 
            +
                    message: "package name",
         | 
| 523 | 
            +
                    default: name
         | 
| 524 | 
            +
                  });
         | 
| 525 | 
            +
                  pkgName = inputName;
         | 
| 526 | 
            +
                }
         | 
| 527 | 
            +
                newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(newJSONString, ["name"], pkgName, { formattingOptions }));
         | 
| 528 | 
            +
                let pkgRepo = getWDPackageJSONFiled(wd, "repository");
         | 
| 529 | 
            +
                if (typeof pkgRepo === "string") {
         | 
| 530 | 
            +
                  pkgRepo = {
         | 
| 531 | 
            +
                    type: "git",
         | 
| 532 | 
            +
                    url: pkgRepo,
         | 
| 533 | 
            +
                    directory: pkgDir
         | 
| 534 | 
            +
                  };
         | 
| 535 | 
            +
                }
         | 
| 536 | 
            +
                newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 537 | 
            +
                  newJSONString,
         | 
| 538 | 
            +
                  ["repository"],
         | 
| 539 | 
            +
                  pkgRepo,
         | 
| 540 | 
            +
                  { formattingOptions }
         | 
| 541 | 
            +
                ));
         | 
| 542 | 
            +
                const homepage = `${pkgRepo?.url}/blob/master/${pkgDir}/README.md`;
         | 
| 543 | 
            +
                newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 544 | 
            +
                  newJSONString,
         | 
| 545 | 
            +
                  ["homepage"],
         | 
| 546 | 
            +
                  homepage,
         | 
| 547 | 
            +
                  { formattingOptions }
         | 
| 548 | 
            +
                ));
         | 
| 549 | 
            +
                let labels = resolvedBug.labels;
         | 
| 550 | 
            +
                if (typeof labels === "function")
         | 
| 551 | 
            +
                  labels = labels({
         | 
| 552 | 
            +
                    name: pkgName,
         | 
| 553 | 
            +
                    dir: pkgDir
         | 
| 554 | 
            +
                  });
         | 
| 555 | 
            +
                labels.push(`scope:${pkgName}`);
         | 
| 556 | 
            +
                const bugs = `${pkgRepo?.url}/issues/new?template=${resolvedBug.template}&labels=${labels.join(",")}`;
         | 
| 557 | 
            +
                newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 558 | 
            +
                  newJSONString,
         | 
| 559 | 
            +
                  ["bugs"],
         | 
| 560 | 
            +
                  bugs,
         | 
| 561 | 
            +
                  { formattingOptions }
         | 
| 562 | 
            +
                ));
         | 
| 563 | 
            +
                function pkgDirTo(to) {
         | 
| 564 | 
            +
                  if (!pkgDir)
         | 
| 565 | 
            +
                    throw new Error("pkgDir is not defined");
         | 
| 566 | 
            +
                  return path__default.default.resolve(pkgDir, to);
         | 
| 567 | 
            +
                }
         | 
| 568 | 
            +
                if (!fs__default.default.existsSync(pkgDir))
         | 
| 569 | 
            +
                  fs__default.default.mkdirSync(pkgDir);
         | 
| 570 | 
            +
                const pkgJSONFilePath = pkgDirTo("package.json");
         | 
| 571 | 
            +
                if (fs__default.default.existsSync(pkgJSONFilePath)) {
         | 
| 572 | 
            +
                  throw new Error("package.json already exists");
         | 
| 573 | 
            +
                }
         | 
| 574 | 
            +
                fs__default.default.writeFileSync(pkgJSONFilePath, newJSONString);
         | 
| 575 | 
            +
                console.log(newJSONString, "written to", pkgJSONFilePath);
         | 
| 576 | 
            +
                const license = getWDPackageJSONFiled(wd, "license");
         | 
| 577 | 
            +
                const readmeFilePath = pkgDirTo("README.md");
         | 
| 578 | 
            +
                if (typeof readme === "function") {
         | 
| 579 | 
            +
                  readme = readme({
         | 
| 580 | 
            +
                    dir: pkgDir,
         | 
| 581 | 
            +
                    packageJson: JSON.parse(newJSONString)
         | 
| 582 | 
            +
                  });
         | 
| 583 | 
            +
                }
         | 
| 584 | 
            +
                const readmeContent = readme.replace(/\$name/g, pkgName).replace(/\$license/g, license);
         | 
| 585 | 
            +
                fs__default.default.writeFileSync(readmeFilePath, readmeContent);
         | 
| 586 | 
            +
              });
         | 
| 587 | 
            +
             | 
| 588 | 
            +
              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 }) => {
         | 
| 589 | 
            +
                actionRestore();
         | 
| 590 | 
            +
                const { value = {} } = await getSelectedProjectsGraph() ?? {};
         | 
| 591 | 
            +
                const selectedProjectsGraphEntries = Object.entries(value);
         | 
| 592 | 
            +
                if (selectedProjectsGraphEntries.length === 0) {
         | 
| 593 | 
            +
                  throw new Error("no packages selected");
         | 
| 594 | 
            +
                }
         | 
| 595 | 
            +
                const mainfests = selectedProjectsGraphEntries.map(([dir, manifest]) => [
         | 
| 596 | 
            +
                  dir,
         | 
| 597 | 
            +
                  mergePackageJson(manifest, dir)
         | 
| 598 | 
            +
                ]);
         | 
| 599 | 
            +
                const passArgs = Object.entries(options).reduce((acc, [key, value2]) => {
         | 
| 600 | 
            +
                  if (value2) {
         | 
| 601 | 
            +
                    acc.push(`--${key}`, value2);
         | 
| 602 | 
            +
                  }
         | 
| 603 | 
            +
                  return acc;
         | 
| 604 | 
            +
                }, []);
         | 
| 605 | 
            +
                for (const [dir, manifest] of mainfests) {
         | 
| 606 | 
            +
                  const oldJSONString = fs__default.default.readFileSync(path__default.default.join(dir, "package.json"), "utf-8");
         | 
| 607 | 
            +
                  const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
         | 
| 608 | 
            +
                  const newVersion = bumper.bump(oldJSON.version, bumper$1);
         | 
| 609 | 
            +
                  const { indent = "    " } = detectIndent__default.default(oldJSONString);
         | 
| 610 | 
            +
                  const formattingOptions = {
         | 
| 611 | 
            +
                    tabSize: indent.length,
         | 
| 612 | 
            +
                    insertSpaces: true
         | 
| 613 | 
            +
                  };
         | 
| 614 | 
            +
                  let newJSONString = oldJSONString;
         | 
| 615 | 
            +
                  newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 616 | 
            +
                    newJSONString,
         | 
| 617 | 
            +
                    ["version"],
         | 
| 618 | 
            +
                    newVersion,
         | 
| 619 | 
            +
                    { formattingOptions }
         | 
| 620 | 
            +
                  ));
         | 
| 621 | 
            +
                  for (const [key, value2] of Object.entries(manifest)) {
         | 
| 622 | 
            +
                    if (JSON.stringify(value2) === JSON.stringify(oldJSON[key]))
         | 
| 623 | 
            +
                      continue;
         | 
| 624 | 
            +
                    newJSONString = jsoncParser.applyEdits(newJSONString, jsoncParser.modify(
         | 
| 625 | 
            +
                      newJSONString,
         | 
| 626 | 
            +
                      ["publishConfig", key],
         | 
| 627 | 
            +
                      value2,
         | 
| 628 | 
            +
                      { formattingOptions }
         | 
| 629 | 
            +
                    ));
         | 
| 630 | 
            +
                  }
         | 
| 631 | 
            +
                  try {
         | 
| 632 | 
            +
                    fs__default.default.renameSync(path__default.default.join(dir, "package.json"), path__default.default.join(dir, "package.json.bak"));
         | 
| 633 | 
            +
                    fs__default.default.writeFileSync(path__default.default.join(dir, "package.json"), newJSONString);
         | 
| 634 | 
            +
                    console.log(newJSONString);
         | 
| 635 | 
            +
                    if (preview) {
         | 
| 636 | 
            +
                      console.warn("preview mode");
         | 
| 637 | 
            +
                      continue;
         | 
| 638 | 
            +
                    }
         | 
| 639 | 
            +
                    childProcess__namespace$1.execSync(["pnpm", "publish", "--access", "public", "--no-git-checks", ...passArgs].join(" "), {
         | 
| 640 | 
            +
                      cwd: dir,
         | 
| 641 | 
            +
                      stdio: "inherit"
         | 
| 642 | 
            +
                    });
         | 
| 643 | 
            +
                    const modifyVersionPackageJSON = jsoncParser.applyEdits(oldJSONString, jsoncParser.modify(oldJSONString, ["version"], newVersion, {}));
         | 
| 644 | 
            +
                    fs__default.default.writeFileSync(path__default.default.join(dir, "package.json.bak"), modifyVersionPackageJSON);
         | 
| 645 | 
            +
                  } finally {
         | 
| 646 | 
            +
                    fs__default.default.unlinkSync(path__default.default.join(dir, "package.json"));
         | 
| 647 | 
            +
                    fs__default.default.renameSync(path__default.default.join(dir, "package.json.bak"), path__default.default.join(dir, "package.json"));
         | 
| 648 | 
            +
                  }
         | 
| 649 | 
            +
                }
         | 
| 650 | 
            +
                actionDone();
         | 
| 651 | 
            +
              });
         | 
| 652 | 
            +
             | 
| 653 | 
            +
              const pkg = require("../package.json");
         | 
| 654 | 
            +
              commander.program.version(pkg.version).description(pkg.description).option("--root <root>", "root path").option("-c, --config-path <configPath>", "config path");
         | 
| 655 | 
            +
              commander.program.parse(process.argv);
         | 
| 656 | 
            +
             | 
| 657 | 
            +
            })(fs, path, filterWorkspacePackages, commander, jsYaml, getWorkspaceDir, childProcess, pkger, detectIndent, inquirer, jsoncParser, micromatch, bumper, childProcess$1);
         | 
| 658 | 
            +
            //# sourceMappingURL=cli.iife.js.map
         |