viba-cli 0.21.0 → 0.22.0
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/fallback-build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/credentials/page/server-reference-manifest.json +4 -4
- package/.next/server/app/credentials/page.js.nft.json +1 -1
- package/.next/server/app/credentials/page_client-reference-manifest.js +1 -1
- package/.next/server/app/credentials.html +1 -1
- package/.next/server/app/credentials.rsc +3 -3
- package/.next/server/app/credentials.segments/_full.segment.rsc +3 -3
- package/.next/server/app/credentials.segments/_head.segment.rsc +1 -1
- package/.next/server/app/credentials.segments/_index.segment.rsc +2 -2
- package/.next/server/app/credentials.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/credentials.segments/credentials/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/credentials.segments/credentials.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/new/page/server-reference-manifest.json +39 -24
- package/.next/server/app/new/page.js +2 -1
- package/.next/server/app/new/page.js.nft.json +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page/server-reference-manifest.json +39 -24
- package/.next/server/app/page.js +2 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +20 -20
- package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__04684e03._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__04684e03._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__8169dd30._.js → [root-of-the-server]__18c94f9b._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__8169dd30._.js.map → [root-of-the-server]__18c94f9b._.js.map} +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__213d5b40._.js → [root-of-the-server]__1c2594e3._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__1c2594e3._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__284fa850._.js → [root-of-the-server]__1f9d0fc3._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__284fa850._.js.map → [root-of-the-server]__1f9d0fc3._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__319c1c59._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__319c1c59._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__352d2b3c._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__352d2b3c._.js.map +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__d5706047._.js → [root-of-the-server]__4b5a2cc9._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__d5706047._.js.map → [root-of-the-server]__4b5a2cc9._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9201693f._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9201693f._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a091a4c1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a091a4c1._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__7f8cd2b9._.js → [root-of-the-server]__e64b9aa2._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__7f8cd2b9._.js.map → [root-of-the-server]__e64b9aa2._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ee9c5185._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ee9c5185._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js +1 -1
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js +2 -2
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js.map +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +65 -43
- package/.next/static/chunks/{5f3a2db85aacc485.js → 1fcc6a067a965845.js} +2 -2
- package/.next/static/chunks/{b453010d797f0f5c.js → 3c6dfb830cb337dd.js} +1 -1
- package/.next/static/chunks/{1891e07f938de79e.js → 496431a0f6bfe933.js} +3 -3
- package/.next/static/chunks/7dad2f2e170a6bec.css +3 -0
- package/.next/static/chunks/dec01b498b99a88a.js +3 -0
- package/.next/static/chunks/{32cdf7e667231c75.js → f632319d9eb6afac.js} +1 -1
- package/.next/static/chunks/fa31e69929e43d1a.js +1 -0
- package/package.json +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__213d5b40._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__3e7d3e82._.js +0 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__3e7d3e82._.js.map +0 -1
- package/.next/static/chunks/16f42a25676d2900.css +0 -3
- package/.next/static/chunks/c76f31165986fed7.js +0 -1
- package/.next/static/chunks/d8a68fb48b3718f5.js +0 -3
- /package/.next/static/{a3AUzSUWZmXcIvA31ymCS → NBlpuq6wedv5ixjNbqUAT}/_buildManifest.js +0 -0
- /package/.next/static/{a3AUzSUWZmXcIvA31ymCS → NBlpuq6wedv5ixjNbqUAT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{a3AUzSUWZmXcIvA31ymCS → NBlpuq6wedv5ixjNbqUAT}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/ms/index.js","../../../../node_modules/debug/src/common.js","../../../../node_modules/has-flag/index.js","../../../../node_modules/supports-color/index.js","../../../../node_modules/debug/src/node.js","../../../../node_modules/debug/src/browser.js","../../../../node_modules/debug/src/index.js","../../../../node_modules/%40kwsites/file-exists/src/index.ts","../../../../node_modules/%40kwsites/file-exists/index.ts","../../../../node_modules/%40kwsites/promise-deferred/src/index.ts","../../../../node_modules/simple-git/src/lib/args/pathspec.ts","../../../../node_modules/simple-git/src/lib/errors/git-error.ts","../../../../node_modules/simple-git/src/lib/errors/git-response-error.ts","../../../../node_modules/simple-git/src/lib/errors/task-configuration-error.ts","../../../../node_modules/simple-git/src/lib/utils/util.ts","../../../../node_modules/simple-git/src/lib/utils/argument-filters.ts","../../../../node_modules/simple-git/src/lib/utils/exit-codes.ts","../../../../node_modules/simple-git/src/lib/utils/git-output-streams.ts","../../../../node_modules/simple-git/src/lib/utils/line-parser.ts","../../../../node_modules/simple-git/src/lib/utils/simple-git-options.ts","../../../../node_modules/simple-git/src/lib/utils/task-options.ts","../../../../node_modules/simple-git/src/lib/utils/task-parser.ts","../../../../node_modules/simple-git/src/lib/utils/index.ts","../../../../node_modules/simple-git/src/lib/tasks/check-is-repo.ts","../../../../node_modules/simple-git/src/lib/responses/CleanSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/task.ts","../../../../node_modules/simple-git/src/lib/tasks/clean.ts","../../../../node_modules/simple-git/src/lib/responses/ConfigList.ts","../../../../node_modules/simple-git/src/lib/tasks/config.ts","../../../../node_modules/simple-git/src/lib/tasks/diff-name-status.ts","../../../../node_modules/simple-git/src/lib/tasks/grep.ts","../../../../node_modules/simple-git/src/lib/tasks/reset.ts","../../../../node_modules/simple-git/src/lib/git-logger.ts","../../../../node_modules/simple-git/src/lib/runners/tasks-pending-queue.ts","../../../../node_modules/simple-git/src/lib/runners/git-executor-chain.ts","../../../../node_modules/simple-git/src/lib/runners/git-executor.ts","../../../../node_modules/simple-git/src/lib/task-callback.ts","../../../../node_modules/simple-git/src/lib/tasks/change-working-directory.ts","../../../../node_modules/simple-git/src/lib/tasks/checkout.ts","../../../../node_modules/simple-git/src/lib/tasks/count-objects.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-commit.ts","../../../../node_modules/simple-git/src/lib/tasks/commit.ts","../../../../node_modules/simple-git/src/lib/tasks/first-commit.ts","../../../../node_modules/simple-git/src/lib/tasks/hash-object.ts","../../../../node_modules/simple-git/src/lib/responses/InitSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/init.ts","../../../../node_modules/simple-git/src/lib/args/log-format.ts","../../../../node_modules/simple-git/src/lib/responses/DiffSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-diff-summary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-list-log-summary.ts","../../../../node_modules/simple-git/src/lib/tasks/diff.ts","../../../../node_modules/simple-git/src/lib/tasks/log.ts","../../../../node_modules/simple-git/src/lib/responses/MergeSummary.ts","../../../../node_modules/simple-git/src/lib/responses/PullSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-remote-objects.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-remote-messages.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-pull.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-merge.ts","../../../../node_modules/simple-git/src/lib/tasks/merge.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-push.ts","../../../../node_modules/simple-git/src/lib/tasks/push.ts","../../../../node_modules/simple-git/src/lib/tasks/show.ts","../../../../node_modules/simple-git/src/lib/responses/FileStatusSummary.ts","../../../../node_modules/simple-git/src/lib/responses/StatusSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/status.ts","../../../../node_modules/simple-git/src/lib/tasks/version.ts","../../../../node_modules/simple-git/src/lib/simple-git-api.ts","../../../../node_modules/simple-git/src/lib/runners/scheduler.ts","../../../../node_modules/simple-git/src/lib/tasks/apply-patch.ts","../../../../node_modules/simple-git/src/lib/responses/BranchDeleteSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-branch-delete.ts","../../../../node_modules/simple-git/src/lib/responses/BranchSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-branch.ts","../../../../node_modules/simple-git/src/lib/tasks/branch.ts","../../../../node_modules/simple-git/src/lib/responses/CheckIgnore.ts","../../../../node_modules/simple-git/src/lib/tasks/check-ignore.ts","../../../../node_modules/simple-git/src/lib/tasks/clone.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-fetch.ts","../../../../node_modules/simple-git/src/lib/tasks/fetch.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-move.ts","../../../../node_modules/simple-git/src/lib/tasks/move.ts","../../../../node_modules/simple-git/src/lib/tasks/pull.ts","../../../../node_modules/simple-git/src/lib/responses/GetRemoteSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/remote.ts","../../../../node_modules/simple-git/src/lib/tasks/stash-list.ts","../../../../node_modules/simple-git/src/lib/tasks/sub-module.ts","../../../../node_modules/simple-git/src/lib/responses/TagList.ts","../../../../node_modules/simple-git/src/lib/tasks/tag.ts","../../../../node_modules/simple-git/src/git.js","../../../../node_modules/simple-git/src/lib/api.ts","../../../../node_modules/simple-git/src/lib/errors/git-construct-error.ts","../../../../node_modules/simple-git/src/lib/errors/git-plugin-error.ts","../../../../node_modules/simple-git/src/lib/plugins/abort-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/block-unsafe-operations-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/command-config-prefixing-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/completion-detection.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/custom-binary.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/error-detection.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/plugin-store.ts","../../../../node_modules/simple-git/src/lib/plugins/progress-monitor-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/spawn-options-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/timout-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/suffix-paths.plugin.ts","../../../../node_modules/simple-git/src/lib/git-factory.ts","../../../../node_modules/simple-git/src/lib/runners/promise-wrapped.ts","../../../../node_modules/simple-git/src/esm.mjs","../../../../src/lib/error-utils.ts","../../../../src/app/actions/git.ts","../../../../src/app/actions/config.ts","../../../../src/lib/terminal-session.ts","../../../../src/app/actions/session.ts"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","unable to read source [project]/node_modules/@kwsites/file-exists/src/index.ts","unable to read source [project]/node_modules/@kwsites/file-exists/index.ts","unable to read source [project]/node_modules/@kwsites/promise-deferred/src/index.ts","const cache = new WeakMap<String, string[]>();\n\nexport function pathspec(...paths: string[]) {\n const key = new String(paths);\n cache.set(key, paths);\n\n return key as string;\n}\n\nexport function isPathSpec(path: string | unknown): path is string {\n return path instanceof String && cache.has(path);\n}\n\nexport function toPaths(pathSpec: string): string[] {\n return cache.get(pathSpec) || [];\n}\n","import type { SimpleGitTask } from '../types';\n\n/**\n * The `GitError` is thrown when the underlying `git` process throws a\n * fatal exception (eg an `ENOENT` exception when attempting to use a\n * non-writable directory as the root for your repo), and acts as the\n * base class for more specific errors thrown by the parsing of the\n * git response or errors in the configuration of the task about to\n * be run.\n *\n * When an exception is thrown, pending tasks in the same instance will\n * not be executed. The recommended way to run a series of tasks that\n * can independently fail without needing to prevent future tasks from\n * running is to catch them individually:\n *\n * ```typescript\n import { gitP, SimpleGit, GitError, PullResult } from 'simple-git';\n\n function catchTask (e: GitError) {\n return e.\n }\n\n const git = gitP(repoWorkingDir);\n const pulled: PullResult | GitError = await git.pull().catch(catchTask);\n const pushed: string | GitError = await git.pushTags().catch(catchTask);\n ```\n */\nexport class GitError extends Error {\n constructor(\n public task?: SimpleGitTask<any>,\n message?: string\n ) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { GitError } from './git-error';\n\n/**\n * The `GitResponseError` is the wrapper for a parsed response that is treated as\n * a fatal error, for example attempting a `merge` can leave the repo in a corrupted\n * state when there are conflicts so the task will reject rather than resolve.\n *\n * For example, catching the merge conflict exception:\n *\n * ```typescript\n import { gitP, SimpleGit, GitResponseError, MergeSummary } from 'simple-git';\n\n const git = gitP(repoRoot);\n const mergeOptions: string[] = ['--no-ff', 'other-branch'];\n const mergeSummary: MergeSummary = await git.merge(mergeOptions)\n .catch((e: GitResponseError<MergeSummary>) => e.git);\n\n if (mergeSummary.failed) {\n // deal with the error\n }\n ```\n */\nexport class GitResponseError<T = any> extends GitError {\n constructor(\n /**\n * `.git` access the parsed response that is treated as being an error\n */\n public readonly git: T,\n message?: string\n ) {\n super(undefined, message || String(git));\n }\n}\n","import { GitError } from './git-error';\n\n/**\n * The `TaskConfigurationError` is thrown when a command was incorrectly\n * configured. An error of this kind means that no attempt was made to\n * run your command through the underlying `git` binary.\n *\n * Check the `.message` property for more detail on why your configuration\n * resulted in an error.\n */\nexport class TaskConfigurationError extends GitError {\n constructor(message?: string) {\n super(undefined, message);\n }\n}\n","import { Buffer } from 'node:buffer';\nimport { exists, FOLDER } from '@kwsites/file-exists';\nimport type { Maybe } from '../types';\nimport { filterHasLength } from './argument-filters';\n\ntype Callable = (...args: unknown[]) => unknown;\n\nexport const NULL = '\\0';\n\nexport const NOOP: Callable = () => {};\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function asFunction<T>(source: T | unknown): Callable {\n if (typeof source !== 'function') {\n return NOOP;\n }\n return source as Callable;\n}\n\n/**\n * Determines whether the supplied argument is both a function, and is not\n * the `NOOP` function.\n */\nexport function isUserFunction<T extends Function>(source: T | unknown): source is T {\n return typeof source === 'function' && source !== NOOP;\n}\n\nexport function splitOn(input: string, char: string): [string, string] {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, ''];\n }\n\n return [input.substr(0, index), input.substr(index + 1)];\n}\n\nexport function first<T extends unknown[]>(input: T, offset?: number): Maybe<T[number]>;\nexport function first<T extends IArguments>(input: T, offset?: number): Maybe<unknown>;\nexport function first(input: unknown[] | IArguments, offset = 0): Maybe<unknown> {\n return isArrayLike(input) && input.length > offset ? input[offset] : undefined;\n}\n\nexport function last<T extends unknown[]>(input: T, offset?: number): Maybe<T[number]>;\nexport function last<T extends IArguments>(input: T, offset?: number): Maybe<unknown>;\nexport function last<T>(input: T, offset?: number): Maybe<unknown>;\nexport function last(input: unknown, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\n\ntype ArrayLike<T> = T[] | IArguments | { [index: number]: T; length: number };\n\nfunction isArrayLike(input: unknown): input is ArrayLike<unknown> {\n return filterHasLength(input);\n}\n\nexport function toLinesWithContent(input = '', trimmed = true, separator = '\\n'): string[] {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, [] as string[]);\n}\n\ntype LineWithContentCallback<T = void> = (line: string) => T;\n\nexport function forEachLineWithContent<T>(\n input: string,\n callback: LineWithContentCallback<T>\n): T[] {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\n\nexport function folderExists(path: string): boolean {\n return exists(path, FOLDER);\n}\n\n/**\n * Adds `item` into the `target` `Array` or `Set` when it is not already present and returns the `item`.\n */\nexport function append<T>(target: T[] | Set<T>, item: T): typeof item {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\n\n/**\n * Adds `item` into the `target` `Array` when it is not already present and returns the `target`.\n */\nexport function including<T>(target: T[], item: T): typeof target {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n\n return target;\n}\n\nexport function remove<T>(target: Set<T> | T[], item: T): T {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\n\nexport const objectToString = Object.prototype.toString.call.bind(Object.prototype.toString) as (\n input: unknown\n) => string;\n\nexport function asArray<T>(source: T | T[]): T[] {\n return Array.isArray(source) ? source : [source];\n}\n\nexport function asCamelCase(str: string) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\n\nexport function asStringArray<T>(source: T | T[]): string[] {\n return asArray(source).map((item) => {\n return item instanceof String ? (item as string) : String(item);\n });\n}\n\nexport function asNumber(source: string | null | undefined, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\n\nexport function prefixedArray<T>(input: T[], prefix: T): T[] {\n const output: T[] = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\n\nexport function bufferToString(input: Buffer | Buffer[]): string {\n return (Array.isArray(input) ? Buffer.concat(input) : input).toString('utf-8');\n}\n\n/**\n * Get a new object from a source object with only the listed properties.\n */\nexport function pick<T, K extends keyof T>(source: T, properties: readonly K[]) {\n const out: Partial<Pick<T, K>> = {};\n\n properties.forEach((key) => {\n if (source[key] !== undefined) {\n out[key] = source[key];\n }\n });\n\n return out;\n}\n\nexport function delay(duration = 0): Promise<void> {\n return new Promise((done) => setTimeout(done, duration));\n}\n\nexport function orVoid<T>(input: T | false) {\n if (input === false) {\n return undefined;\n }\n return input;\n}\n","import { isPathSpec } from '../args/pathspec';\nimport type { Maybe, Options, Primitives } from '../types';\nimport { objectToString } from './util';\n\nexport type ArgumentFilterPredicate<T> = (input: T | unknown) => input is T;\n\nexport function filterType<T, K>(\n input: K,\n filter: ArgumentFilterPredicate<T>\n): K extends T ? T : undefined;\nexport function filterType<T, K>(input: K, filter: ArgumentFilterPredicate<T>, def: T): T;\nexport function filterType<T, K>(input: K, filter: ArgumentFilterPredicate<T>, def?: T): Maybe<T> {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : undefined;\n}\n\nexport const filterArray: ArgumentFilterPredicate<Array<unknown>> = (\n input\n): input is Array<unknown> => {\n return Array.isArray(input);\n};\n\nexport function filterPrimitives(\n input: unknown,\n omit?: Array<'boolean' | 'string' | 'number'>\n): input is Primitives {\n const type = isPathSpec(input) ? 'string' : typeof input;\n\n return (\n /number|string|boolean/.test(type) &&\n (!omit || !omit.includes(type as 'boolean' | 'string' | 'number'))\n );\n}\n\nexport const filterNumber: ArgumentFilterPredicate<number> = (input: unknown): input is number => {\n return typeof input === 'number';\n};\n\nexport const filterString: ArgumentFilterPredicate<string> = (input: unknown): input is string => {\n return typeof input === 'string';\n};\n\nexport const filterStringOrStringArray: ArgumentFilterPredicate<string | string[]> = (\n input\n): input is string | string[] => {\n return filterString(input) || (Array.isArray(input) && input.every(filterString));\n};\n\nexport function filterPlainObject<T extends Options>(input: T | unknown): input is T;\nexport function filterPlainObject<T extends Record<string, unknown>>(\n input: T | unknown\n): input is T {\n return !!input && objectToString(input) === '[object Object]';\n}\n\nexport function filterFunction(input: unknown): input is (...args: unknown[]) => unknown {\n return typeof input === 'function';\n}\n\nexport const filterHasLength: ArgumentFilterPredicate<{ length: number }> = (\n input\n): input is { length: number } => {\n if (input == null || 'number|boolean|function'.includes(typeof input)) {\n return false;\n }\n\n return typeof (input as { length?: number }).length === 'number';\n};\n","/**\n * Known process exit codes used by the task parsers to determine whether an error\n * was one they can automatically handle\n */\nexport enum ExitCodes {\n SUCCESS,\n ERROR,\n NOT_FOUND = -2,\n UNCLEAN = 128,\n}\n","import { TaskResponseFormat } from '../types';\n\nexport class GitOutputStreams<T extends TaskResponseFormat = Buffer> {\n constructor(\n public readonly stdOut: T,\n public readonly stdErr: T\n ) {}\n\n asStrings(): GitOutputStreams<string> {\n return new GitOutputStreams(this.stdOut.toString('utf8'), this.stdErr.toString('utf8'));\n }\n}\n","function useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\n\nexport class LineParser<T> {\n protected matches: string[] = [];\n protected useMatches: (target: T, match: string[]) => boolean | void = useMatchesDefault;\n\n private _regExp: RegExp[];\n\n constructor(\n regExp: RegExp | RegExp[],\n useMatches?: (target: T, match: string[]) => boolean | void\n ) {\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n\n parse = (line: (offset: number) => string | undefined, target: T): boolean => {\n this.resetMatches();\n\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n\n protected resetMatches() {\n this.matches.length = 0;\n }\n\n protected prepareMatches() {\n return this.matches;\n }\n\n protected addMatch(reg: RegExp, index: number, line?: string) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n\n return !!matched;\n }\n\n protected pushMatch(_index: number, matched: string[]) {\n this.matches.push(...matched.slice(1));\n }\n}\n\nexport class RemoteLineParser<T> extends LineParser<T> {\n protected addMatch(reg: RegExp, index: number, line?: string): boolean {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n\n protected pushMatch(index: number, matched: string[]) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n}\n","import { SimpleGitOptions } from '../types';\n\nconst defaultOptions: Omit<SimpleGitOptions, 'baseDir'> = {\n binary: 'git',\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false,\n};\n\nexport function createInstanceConfig(\n ...options: Array<Partial<SimpleGitOptions> | undefined>\n): SimpleGitOptions {\n const baseDir = process.cwd();\n const config: SimpleGitOptions = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === 'object' && o)\n );\n\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n\n return config;\n}\n","import {\n filterArray,\n filterFunction,\n filterPlainObject,\n filterPrimitives,\n filterType,\n} from './argument-filters';\nimport { asFunction, asStringArray, isUserFunction, last } from './util';\nimport { Maybe, Options } from '../types';\nimport { isPathSpec } from '../args/pathspec';\n\nexport function appendTaskOptions<T extends Options = Options>(\n options: Maybe<T>,\n commands: string[] = []\n): string[] {\n if (!filterPlainObject<Options>(options)) {\n return commands;\n }\n\n return Object.keys(options).reduce((commands: string[], key: string) => {\n const value = options[key];\n\n if (isPathSpec(value)) {\n commands.push(value);\n } else if (filterPrimitives(value, ['boolean'])) {\n commands.push(key + '=' + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, ['string', 'number'])) {\n commands.push(key + '=' + v);\n }\n }\n } else {\n commands.push(key);\n }\n\n return commands;\n }, commands);\n}\n\nexport function getTrailingOptions(\n args: IArguments,\n initialPrimitive = 0,\n objectOnly = false\n): string[] {\n const command: string[] = [];\n\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if ('string|number'.includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n\n return command;\n}\n\nfunction trailingArrayArgument(args: IArguments) {\n const hasTrailingCallback = typeof last(args) === 'function';\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\n\n/**\n * Given any number of arguments, returns the trailing options argument, ignoring a trailing function argument\n * if there is one. When not found, the return value is null.\n */\nexport function trailingOptionsArgument(args: IArguments): Maybe<Options> {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function trailingFunctionArgument(\n args: unknown[] | IArguments | unknown,\n includeNoop = true\n): Maybe<(...args: unknown[]) => unknown> {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : undefined;\n}\n","import type { MaybeArray, TaskParser, TaskResponseFormat } from '../types';\nimport { GitOutputStreams } from './git-output-streams';\nimport { LineParser } from './line-parser';\nimport { asArray, toLinesWithContent } from './util';\n\nexport function callTaskParser<INPUT extends TaskResponseFormat, RESPONSE>(\n parser: TaskParser<INPUT, RESPONSE>,\n streams: GitOutputStreams<INPUT>\n) {\n return parser(streams.stdOut, streams.stdErr);\n}\n\nexport function parseStringResponse<T>(\n result: T,\n parsers: LineParser<T>[],\n texts: MaybeArray<string>,\n trim = true\n): T {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n\n parsers.some(({ parse }) => parse(line, result));\n }\n });\n\n return result;\n}\n","export * from './argument-filters';\nexport * from './exit-codes';\nexport * from './git-output-streams';\nexport * from './line-parser';\nexport * from './simple-git-options';\nexport * from './task-options';\nexport * from './task-parser';\nexport * from './util';\n","import { ExitCodes } from '../utils';\nimport { Maybe, StringTask } from '../types';\n\nexport enum CheckRepoActions {\n BARE = 'bare',\n IN_TREE = 'tree',\n IS_REPO_ROOT = 'root',\n}\n\nconst onError: StringTask<boolean>['onError'] = ({ exitCode }, error, done, fail) => {\n if (exitCode === ExitCodes.UNCLEAN && isNotRepoMessage(error)) {\n return done(Buffer.from('false'));\n }\n\n fail(error);\n};\n\nconst parser: StringTask<boolean>['parser'] = (text) => {\n return text.trim() === 'true';\n};\n\nexport function checkIsRepoTask(action: Maybe<CheckRepoActions>): StringTask<boolean> {\n switch (action) {\n case CheckRepoActions.BARE:\n return checkIsBareRepoTask();\n case CheckRepoActions.IS_REPO_ROOT:\n return checkIsRepoRootTask();\n }\n\n const commands = ['rev-parse', '--is-inside-work-tree'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nexport function checkIsRepoRootTask(): StringTask<boolean> {\n const commands = ['rev-parse', '--git-dir'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n },\n };\n}\n\nexport function checkIsBareRepoTask(): StringTask<boolean> {\n const commands = ['rev-parse', '--is-bare-repository'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nfunction isNotRepoMessage(error: Error): boolean {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\n","import { CleanSummary } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\n\nexport class CleanResponse implements CleanSummary {\n public paths: string[] = [];\n public files: string[] = [];\n public folders: string[] = [];\n\n constructor(public readonly dryRun: boolean) {}\n}\n\nconst removalRegexp = /^[a-z]+\\s*/i;\nconst dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\nconst isFolderRegexp = /\\/$/;\n\nexport function cleanSummaryParser(dryRun: boolean, text: string): CleanSummary {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, '');\n\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n\n return summary;\n}\n","import { TaskConfigurationError } from '../errors/task-configuration-error';\nimport type { BufferTask, EmptyTaskParser, SimpleGitTask, StringTask } from '../types';\n\nexport const EMPTY_COMMANDS: [] = [];\n\nexport type EmptyTask = {\n commands: typeof EMPTY_COMMANDS;\n format: 'empty';\n parser: EmptyTaskParser;\n onError?: undefined;\n};\n\nexport function adhocExecTask(parser: EmptyTaskParser): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser,\n };\n}\n\nexport function configurationErrorTask(error: Error | string): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser() {\n throw typeof error === 'string' ? new TaskConfigurationError(error) : error;\n },\n };\n}\n\nexport function straightThroughStringTask(commands: string[], trimmed = false): StringTask<string> {\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return trimmed ? String(text).trim() : text;\n },\n };\n}\n\nexport function straightThroughBufferTask(commands: string[]): BufferTask<Buffer> {\n return {\n commands,\n format: 'buffer',\n parser(buffer) {\n return buffer;\n },\n };\n}\n\nexport function isBufferTask<R>(task: SimpleGitTask<R>): task is BufferTask<R> {\n return task.format === 'buffer';\n}\n\nexport function isEmptyTask<R>(task: SimpleGitTask<R>): task is EmptyTask {\n return task.format === 'empty' || !task.commands.length;\n}\n","import { CleanSummary } from '../../../typings';\nimport { cleanSummaryParser } from '../responses/CleanSummary';\nimport { Maybe, StringTask } from '../types';\nimport { asStringArray } from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport const CONFIG_ERROR_INTERACTIVE_MODE = 'Git clean interactive mode is not supported';\nexport const CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\nexport const CONFIG_ERROR_UNKNOWN_OPTION = 'Git clean unknown option found in: ';\n\n/**\n * All supported option switches available for use in a `git.clean` operation\n */\nexport enum CleanOptions {\n DRY_RUN = 'n',\n FORCE = 'f',\n IGNORED_INCLUDED = 'x',\n IGNORED_ONLY = 'X',\n EXCLUDING = 'e',\n QUIET = 'q',\n RECURSIVE = 'd',\n}\n\n/**\n * The two modes `git.clean` can run in - one of these must be supplied in order\n * for the command to not throw a `TaskConfigurationError`\n */\nexport type CleanMode = CleanOptions.FORCE | CleanOptions.DRY_RUN;\n\nconst CleanOptionValues: Set<string> = new Set([\n 'i',\n ...asStringArray(Object.values(CleanOptions as any)),\n]);\n\nexport function cleanWithOptionsTask(mode: CleanMode | string, customArgs: string[]) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n\n options.push(...customArgs);\n\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n\n return cleanTask(cleanMode, options);\n}\n\nexport function cleanTask(mode: CleanMode, customArgs: string[]): StringTask<CleanSummary> {\n const commands: string[] = ['clean', `-${mode}`, ...customArgs];\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): CleanSummary {\n return cleanSummaryParser(mode === CleanOptions.DRY_RUN, text);\n },\n };\n}\n\nexport function isCleanOptionsArray(input: string[]): input is CleanOptions[] {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\n\nfunction getCleanOptions(input: string) {\n let cleanMode: Maybe<CleanMode>;\n let options: string[] = [];\n let valid = { cleanMode: false, options: true };\n\n input\n .replace(/[^a-z]i/g, '')\n .split('')\n .forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption((options[options.length] = `-${char}`));\n }\n });\n\n return {\n cleanMode,\n options,\n valid,\n };\n}\n\nfunction isCleanMode(cleanMode?: string): cleanMode is CleanMode {\n return cleanMode === CleanOptions.FORCE || cleanMode === CleanOptions.DRY_RUN;\n}\n\nfunction isKnownOption(option: string): boolean {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\n\nfunction isInteractiveMode(option: string): boolean {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf('i') > 0;\n }\n\n return option === '--interactive';\n}\n","import { ConfigGetResult, ConfigListSummary, ConfigValues } from '../../../typings';\nimport { last, splitOn } from '../utils';\n\nexport class ConfigList implements ConfigListSummary {\n public files: string[] = [];\n public values: { [fileName: string]: ConfigValues } = Object.create(null);\n\n private _all: ConfigValues | undefined;\n\n public get all(): ConfigValues {\n if (!this._all) {\n this._all = this.files.reduce((all: ConfigValues, file: string) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n\n return this._all;\n }\n\n public addFile(file: string): ConfigValues {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n\n this.files.push(file);\n }\n\n return this.values[file];\n }\n\n public addValue(file: string, key: string, value: string) {\n const values = this.addFile(file);\n\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n (values[key] as string[]).push(value);\n } else {\n values[key] = [values[key] as string, value];\n }\n\n this._all = undefined;\n }\n}\n\nexport function configListParser(text: string): ConfigList {\n const config = new ConfigList();\n\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n\n return config;\n}\n\nexport function configGetParser(text: string, key: string): ConfigGetResult {\n let value: string | null = null;\n const values: string[] = [];\n const scopes: Map<string, string[]> = new Map();\n\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n\n values.push((value = item.value));\n\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n\n scopes.get(item.file)!.push(value);\n }\n\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values,\n };\n}\n\nfunction configFilePath(filePath: string): string {\n return filePath.replace(/^(file):/, '');\n}\n\nfunction* configParser(text: string, requestedKey: string | null = null) {\n const lines = text.split('\\0');\n\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n\n let value = lines[i++];\n let key = requestedKey;\n\n if (value.includes('\\n')) {\n const line = splitOn(value, '\\n');\n key = line[0];\n value = line[1];\n }\n\n yield { file, key, value };\n }\n}\n","import type { ConfigGetResult, ConfigListSummary, SimpleGit } from '../../../typings';\nimport { configGetParser, configListParser } from '../responses/ConfigList';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { trailingFunctionArgument } from '../utils';\n\nexport enum GitConfigScope {\n system = 'system',\n global = 'global',\n local = 'local',\n worktree = 'worktree',\n}\n\nfunction asConfigScope<T extends GitConfigScope | undefined>(\n scope: GitConfigScope | unknown,\n fallback: T\n): GitConfigScope | T {\n if (typeof scope === 'string' && Object.hasOwn(GitConfigScope, scope)) {\n return scope as GitConfigScope;\n }\n return fallback;\n}\n\nfunction addConfigTask(\n key: string,\n value: string,\n append: boolean,\n scope: GitConfigScope\n): StringTask<string> {\n const commands: string[] = ['config', `--${scope}`];\n\n if (append) {\n commands.push('--add');\n }\n\n commands.push(key, value);\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): string {\n return text;\n },\n };\n}\n\nfunction getConfigTask(key: string, scope?: GitConfigScope): StringTask<ConfigGetResult> {\n const commands: string[] = ['config', '--null', '--show-origin', '--get-all', key];\n\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return configGetParser(text, key);\n },\n };\n}\n\nfunction listConfigTask(scope?: GitConfigScope): StringTask<ConfigListSummary> {\n const commands = ['config', '--list', '--show-origin', '--null'];\n\n if (scope) {\n commands.push(`--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string) {\n return configListParser(text);\n },\n };\n}\n\nexport default function (): Pick<SimpleGit, 'addConfig' | 'getConfig' | 'listConfig'> {\n return {\n addConfig(this: SimpleGitApi, key: string, value: string, ...rest: unknown[]) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], GitConfigScope.local)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n\n getConfig(this: SimpleGitApi, key: string, scope?: GitConfigScope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n\n listConfig(this: SimpleGitApi, ...rest: unknown[]) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","export enum DiffNameStatus {\n ADDED = 'A',\n COPIED = 'C',\n DELETED = 'D',\n MODIFIED = 'M',\n RENAMED = 'R',\n CHANGED = 'T',\n UNMERGED = 'U',\n UNKNOWN = 'X',\n BROKEN = 'B',\n}\n\nconst diffNameStatus = new Set(Object.values(DiffNameStatus));\n\nexport function isDiffNameStatus(input: string): input is DiffNameStatus {\n return diffNameStatus.has(input as DiffNameStatus);\n}\n","import { GrepResult, SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport {\n asNumber,\n forEachLineWithContent,\n getTrailingOptions,\n NULL,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\n\nimport { configurationErrorTask } from './task';\n\nconst disallowedOptions = ['-h'];\n\nconst Query = Symbol('grepQuery');\n\nexport interface GitGrepQuery extends Iterable<string> {\n /** Adds one or more terms to be grouped as an \"and\" to any other terms */\n and(...and: string[]): this;\n\n /** Adds one or more search terms - git.grep will \"or\" this to other terms */\n param(...param: string[]): this;\n}\n\nclass GrepQuery implements GitGrepQuery {\n private [Query]: string[] = [];\n\n *[Symbol.iterator]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n\n and(...and: string[]) {\n and.length && this[Query].push('--and', '(', ...prefixedArray(and, '-e'), ')');\n return this;\n }\n\n param(...param: string[]) {\n this[Query].push(...prefixedArray(param, '-e'));\n return this;\n }\n}\n\n/**\n * Creates a new builder for a `git.grep` query with optional params\n */\nexport function grepQueryBuilder(...params: string[]): GitGrepQuery {\n return new GrepQuery().param(...params);\n}\n\nfunction parseGrep(grep: string): GrepResult {\n const paths: GrepResult['paths'] = new Set<string>();\n const results: GrepResult['results'] = {};\n\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview,\n });\n });\n\n return {\n paths,\n results,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'grep'> {\n return {\n grep(this: SimpleGitApi, searchTerm: string | GitGrepQuery) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n\n if (typeof searchTerm === 'string') {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n\n const commands = ['grep', '--null', '-n', '--full-name', ...options, ...searchTerm];\n\n return this._runTask(\n {\n commands,\n format: 'utf-8',\n parser(stdOut) {\n return parseGrep(stdOut);\n },\n },\n then\n );\n },\n };\n}\n","import type { Maybe, OptionFlags, Options } from '../types';\nimport { asStringArray } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nexport enum ResetMode {\n MIXED = 'mixed',\n SOFT = 'soft',\n HARD = 'hard',\n MERGE = 'merge',\n KEEP = 'keep',\n}\n\nconst validResetModes = asStringArray(Object.values(ResetMode));\n\nexport type ResetOptions = Options &\n OptionFlags<'-q' | '--quiet' | '--no-quiet' | '--pathspec-from-nul'> &\n OptionFlags<'--pathspec-from-file', string>;\n\nexport function resetTask(mode: Maybe<ResetMode>, customArgs: string[]) {\n const commands: string[] = ['reset'];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n\n return straightThroughStringTask(commands);\n}\n\nexport function getResetMode(mode: ResetMode | unknown): Maybe<ResetMode> {\n if (isValidResetMode(mode)) {\n return mode;\n }\n\n switch (typeof mode) {\n case 'string':\n case 'undefined':\n return ResetMode.SOFT;\n }\n\n return;\n}\n\nfunction isValidResetMode(mode: ResetMode | unknown): mode is ResetMode {\n return typeof mode === 'string' && validResetModes.includes(mode);\n}\n","import debug, { Debugger } from 'debug';\nimport {\n append,\n filterHasLength,\n filterString,\n filterType,\n NOOP,\n objectToString,\n remove,\n} from './utils';\nimport { Maybe } from './types';\n\ndebug.formatters.L = (value: any) => String(filterHasLength(value) ? value.length : '-');\ndebug.formatters.B = (value: Buffer) => {\n if (Buffer.isBuffer(value)) {\n return value.toString('utf8');\n }\n return objectToString(value);\n};\n\ntype OutputLoggingHandler = (message: string, ...args: any[]) => void;\n\nfunction createLog() {\n return debug('simple-git');\n}\n\nexport interface OutputLogger extends OutputLoggingHandler {\n readonly label: string;\n\n info: OutputLoggingHandler;\n step(nextStep?: string): OutputLogger;\n sibling(name: string): OutputLogger;\n}\n\nfunction prefixedLogger(\n to: Debugger,\n prefix: string,\n forward?: OutputLoggingHandler\n): OutputLoggingHandler {\n if (!prefix || !String(prefix).replace(/\\s*/, '')) {\n return !forward\n ? to\n : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\n\nfunction childLoggerName(\n name: Maybe<string>,\n childDebugger: Maybe<Debugger>,\n { namespace: parentNamespace }: Debugger\n): string {\n if (typeof name === 'string') {\n return name;\n }\n const childNamespace = (childDebugger && childDebugger.namespace) || '';\n\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n\n return childNamespace || parentNamespace;\n}\n\nexport function createLogger(\n label: string,\n verbose?: string | Debugger,\n initialStep?: string,\n infoDebugger = createLog()\n): OutputLogger {\n const labelPrefix = (label && `[${label}]`) || '';\n\n const spawned: OutputLogger[] = [];\n const debugDebugger: Maybe<Debugger> =\n typeof verbose === 'string' ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n\n return step(initialStep);\n\n function sibling(name: string, initial?: string) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n\n function step(phase?: string) {\n const stepPrefix = (phase && `[${phase}]`) || '';\n const debug = (debugDebugger && prefixedLogger(debugDebugger, stepPrefix)) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug);\n\n return Object.assign(debugDebugger ? debug : info, {\n label,\n sibling,\n info,\n step,\n });\n }\n}\n\n/**\n * The `GitLogger` is used by the main `SimpleGit` runner to handle logging\n * any warnings or errors.\n */\nexport class GitLogger {\n public error: OutputLoggingHandler;\n\n public warn: OutputLoggingHandler;\n\n constructor(private _out: Debugger = createLog()) {\n this.error = prefixedLogger(_out, '[ERROR]');\n this.warn = prefixedLogger(_out, '[WARN]');\n }\n\n silent(silence = false) {\n if (silence !== this._out.enabled) {\n return;\n }\n\n const { namespace } = this._out;\n const env = (process.env.DEBUG || '').split(',').filter((s) => !!s);\n const hasOn = env.includes(namespace);\n const hasOff = env.includes(`-${namespace}`);\n\n // enabling the log\n if (!silence) {\n if (hasOff) {\n remove(env, `-${namespace}`);\n } else {\n env.push(namespace);\n }\n } else {\n if (hasOn) {\n remove(env, namespace);\n } else {\n env.push(`-${namespace}`);\n }\n }\n\n debug.enable(env.join(','));\n }\n}\n","import { SimpleGitTask } from '../types';\nimport { GitError } from '../errors/git-error';\nimport { createLogger, OutputLogger } from '../git-logger';\n\ntype AnySimpleGitTask = SimpleGitTask<any>;\n\ntype TaskInProgress = {\n name: string;\n logger: OutputLogger;\n task: AnySimpleGitTask;\n};\n\nexport class TasksPendingQueue {\n private _queue: Map<AnySimpleGitTask, TaskInProgress> = new Map();\n\n constructor(private logLabel = 'GitExecutor') {}\n\n private withProgress(task: AnySimpleGitTask) {\n return this._queue.get(task);\n }\n\n private createProgress(task: AnySimpleGitTask): TaskInProgress {\n const name = TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n\n return {\n task,\n logger,\n name,\n };\n }\n\n push(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.createProgress(task);\n progress.logger('Adding task to the queue, commands = %o', task.commands);\n\n this._queue.set(task, progress);\n\n return progress;\n }\n\n fatal(err: GitError) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n\n this.complete(task);\n }\n\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n\n complete(task: AnySimpleGitTask) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n\n attempt(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(undefined, 'TasksPendingQueue: attempt called for an unknown task');\n }\n progress.logger('Starting task');\n\n return progress;\n }\n\n static getName(name = 'empty') {\n return `task:${name}:${++TasksPendingQueue.counter}`;\n }\n\n private static counter = 0;\n}\n","import { spawn, SpawnOptions } from 'child_process';\nimport { GitError } from '../errors/git-error';\nimport { OutputLogger } from '../git-logger';\nimport { PluginStore } from '../plugins';\nimport { EmptyTask, isBufferTask, isEmptyTask } from '../tasks/task';\nimport {\n GitExecutorResult,\n Maybe,\n outputHandler,\n RunnableTask,\n SimpleGitExecutor,\n SimpleGitTask,\n} from '../types';\nimport { callTaskParser, first, GitOutputStreams, objectToString } from '../utils';\nimport { Scheduler } from './scheduler';\nimport { TasksPendingQueue } from './tasks-pending-queue';\n\nexport class GitExecutorChain implements SimpleGitExecutor {\n private _chain: Promise<any> = Promise.resolve();\n private _queue = new TasksPendingQueue();\n private _cwd: string | undefined;\n\n public get cwd() {\n return this._cwd || this._executor.cwd;\n }\n\n public set cwd(cwd: string) {\n this._cwd = cwd;\n }\n\n public get env() {\n return this._executor.env;\n }\n\n public get outputHandler() {\n return this._executor.outputHandler;\n }\n\n constructor(\n private _executor: SimpleGitExecutor,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n public chain() {\n return this;\n }\n\n public push<R>(task: SimpleGitTask<R>): Promise<R> {\n this._queue.push(task);\n\n return (this._chain = this._chain.then(() => this.attemptTask(task)));\n }\n\n private async attemptTask<R>(task: SimpleGitTask<R>): Promise<void | R> {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n\n try {\n const { logger } = this._queue.attempt(task);\n return (await (isEmptyTask(task)\n ? this.attemptEmptyTask(task, logger)\n : this.attemptRemoteTask(task, logger))) as R;\n } catch (e) {\n throw this.onFatalException(task, e as Error);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n\n private onFatalException<R>(task: SimpleGitTask<R>, e: Error) {\n const gitError =\n e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n\n return gitError;\n }\n\n private async attemptRemoteTask<R>(task: RunnableTask<R>, logger: OutputLogger) {\n const binary = this._plugins.exec('spawn.binary', '', pluginContext(task, task.commands));\n const args = this._plugins.exec(\n 'spawn.args',\n [...task.commands],\n pluginContext(task, task.commands)\n );\n\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step('SPAWN')\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step('HANDLE'));\n\n logger(`passing response to task's parser as a %s`, task.format);\n\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n\n private async attemptEmptyTask(task: EmptyTask, logger: OutputLogger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n\n private handleTaskData<R>(\n task: SimpleGitTask<R>,\n args: string[],\n result: GitExecutorResult,\n logger: OutputLogger\n ): Promise<GitOutputStreams> {\n const { exitCode, rejection, stdOut, stdErr } = result;\n\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n\n const { error } = this._plugins.exec(\n 'task.error',\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result,\n }\n );\n\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n\n private async gitResponse<R>(\n task: SimpleGitTask<R>,\n command: string,\n args: string[],\n outputHandler: Maybe<outputHandler>,\n logger: OutputLogger\n ): Promise<GitExecutorResult> {\n const outputLogger = logger.sibling('output');\n const spawnOptions: SpawnOptions = this._plugins.exec(\n 'spawn.options',\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true,\n },\n pluginContext(task, task.commands)\n );\n\n return new Promise((done) => {\n const stdOut: Buffer[] = [];\n const stdErr: Buffer[] = [];\n\n logger.info(`%s %o`, command, args);\n logger('%O', spawnOptions);\n\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection,\n });\n }\n\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n const spawned = spawn(command, args, spawnOptions);\n\n spawned.stdout!.on(\n 'data',\n onDataReceived(stdOut, 'stdOut', logger, outputLogger.step('stdOut'))\n );\n spawned.stderr!.on(\n 'data',\n onDataReceived(stdErr, 'stdErr', logger, outputLogger.step('stdErr'))\n );\n\n spawned.on('error', onErrorReceived(stdErr, logger));\n\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout!, spawned.stderr!, [...args]);\n }\n\n this._plugins.exec('spawn.after', undefined, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode: number, reason?: Error) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason,\n });\n },\n kill(reason: Error) {\n if (spawned.killed) {\n return;\n }\n\n rejection = reason;\n spawned.kill('SIGINT');\n },\n });\n });\n }\n\n private _beforeSpawn<R>(task: SimpleGitTask<R>, args: string[]) {\n let rejection: Maybe<Error>;\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n return rejection;\n }\n}\n\nfunction pluginContext<R>(task: SimpleGitTask<R>, commands: string[]) {\n return {\n method: first(task.commands) || '',\n commands,\n };\n}\n\nfunction onErrorReceived(target: Buffer[], logger: OutputLogger) {\n return (err: Error) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), 'ascii'));\n };\n}\n\nfunction onDataReceived(\n target: Buffer[],\n name: string,\n logger: OutputLogger,\n output: OutputLogger\n) {\n return (buffer: Buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\n","import type { PluginStore } from '../plugins';\nimport type { GitExecutorEnv, outputHandler, SimpleGitExecutor, SimpleGitTask } from '../types';\n\nimport { GitExecutorChain } from './git-executor-chain';\nimport { Scheduler } from './scheduler';\n\nexport class GitExecutor implements SimpleGitExecutor {\n private _chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n\n public env: GitExecutorEnv;\n public outputHandler?: outputHandler;\n\n constructor(\n public cwd: string,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n chain(): SimpleGitExecutor {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n\n push<R>(task: SimpleGitTask<R>): Promise<R> {\n return this._chain.push(task);\n }\n}\n","import { GitError } from './errors/git-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport { NOOP } from './utils';\n\nexport function taskCallback<R>(\n task: SimpleGitTask<R>,\n response: Promise<R>,\n callback: SimpleGitTaskCallback<R> = NOOP\n) {\n const onSuccess = (data: R) => {\n callback(null, data);\n };\n\n const onError = (err: GitError | GitResponseError) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n undefined as any\n );\n }\n };\n\n response.then(onSuccess, onError);\n}\n\nfunction addDeprecationNoticeToError(err: GitResponseError) {\n let log = (name: string) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n\n function descriptorReducer(all: PropertyDescriptorMap, name: string): typeof all {\n if (name in err) {\n return all;\n }\n\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n },\n };\n\n return all;\n }\n}\n","import { folderExists } from '../utils';\nimport { SimpleGitExecutor } from '../types';\nimport { adhocExecTask } from './task';\n\nexport function changeWorkingDirectoryTask(directory: string, root?: SimpleGitExecutor) {\n return adhocExecTask((instance: SimpleGitExecutor) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n\n return ((root || instance).cwd = directory);\n });\n}\n","import type { SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, remove, trailingFunctionArgument } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nfunction checkoutTask(args: string[]) {\n const commands = ['checkout', ...args];\n if (commands[1] === '-b' && commands.includes('-B')) {\n commands[1] = remove(commands, '-B');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport default function (): Pick<SimpleGit, 'checkout' | 'checkoutBranch' | 'checkoutLocalBranch'> {\n return {\n checkout(this: SimpleGitApi) {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutBranch(this: SimpleGitApi, branchName, startPoint) {\n return this._runTask(\n checkoutTask(['-b', branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutLocalBranch(this: SimpleGitApi, branchName) {\n return this._runTask(\n checkoutTask(['-b', branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import type { SimpleGitApi } from '../simple-git-api';\nimport type { SimpleGit } from '../../../typings';\nimport { asCamelCase, asNumber, LineParser, parseStringResponse } from '../utils';\n\nexport interface CountObjectsResult {\n count: number;\n size: number;\n inPack: number;\n packs: number;\n sizePack: number;\n prunePackable: number;\n garbage: number;\n sizeGarbage: number;\n}\n\nfunction countObjectsResponse(): CountObjectsResult {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0,\n };\n}\n\nconst parser: LineParser<CountObjectsResult> = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property as keyof typeof result] = asNumber(value);\n }\n }\n);\n\nexport default function (): Pick<SimpleGit, 'countObjects'> {\n return {\n countObjects(this: SimpleGitApi) {\n return this._runTask({\n commands: ['count-objects', '--verbose'],\n format: 'utf-8',\n parser(stdOut: string) {\n return parseStringResponse(countObjectsResponse(), [parser], stdOut);\n },\n });\n },\n };\n}\n","import { CommitResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<CommitResult>[] = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split('<');\n const email = parts.pop();\n\n if (!email || !email.includes('@')) {\n return;\n }\n\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join('<').trim(),\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === '-') {\n result.summary.deletions = count;\n } else if (direction === '+') {\n result.summary.insertions = count;\n }\n }\n ),\n];\n\nexport function parseCommitResult(stdOut: string): CommitResult {\n const result: CommitResult = {\n author: null,\n branch: '',\n commit: '',\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0,\n },\n };\n return parseStringResponse(result, parsers, stdOut);\n}\n","import type { CommitResult, SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { parseCommitResult } from '../parsers/parse-commit';\nimport {\n asArray,\n asStringArray,\n filterArray,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport function commitTask(\n message: string[],\n files: string[],\n customArgs: string[]\n): StringTask<CommitResult> {\n const commands: string[] = [\n '-c',\n 'core.abbrev=40',\n 'commit',\n ...prefixedArray(message, '-m'),\n ...files,\n ...customArgs,\n ];\n\n return {\n commands,\n format: 'utf-8',\n parser: parseCommitResult,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'commit'> {\n return {\n commit(this: SimpleGitApi, message: string | string[], ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const task =\n rejectDeprecatedSignatures(message) ||\n commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true),\n ]\n );\n\n return this._runTask(task, next);\n },\n };\n\n function rejectDeprecatedSignatures(message?: unknown) {\n return (\n !filterStringOrStringArray(message) &&\n configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n )\n );\n }\n}\n","import { Response, SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { trailingFunctionArgument } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nexport default function (): Pick<SimpleGit, 'firstCommit'> {\n return {\n firstCommit(this: SimpleGitApi): Response<string> {\n return this._runTask(\n straightThroughStringTask(['rev-list', '--max-parents=0', 'HEAD'], true),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import { straightThroughStringTask } from './task';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.hashObject`\n */\nexport function hashObjectTask(filePath: string, write: boolean): StringTask<string> {\n const commands = ['hash-object', filePath];\n if (write) {\n commands.push('-w');\n }\n\n return straightThroughStringTask(commands, true);\n}\n","import { InitResult } from '../../../typings';\n\nexport class InitSummary implements InitResult {\n constructor(\n public readonly bare: boolean,\n public readonly path: string,\n public readonly existing: boolean,\n public readonly gitDir: string\n ) {}\n}\n\nconst initResponseRegex = /^Init.+ repository in (.+)$/;\nconst reInitResponseRegex = /^Rein.+ in (.+)$/;\n\nexport function parseInit(bare: boolean, path: string, text: string) {\n const response = String(text).trim();\n let result;\n\n if ((result = initResponseRegex.exec(response))) {\n return new InitSummary(bare, path, false, result[1]);\n }\n\n if ((result = reInitResponseRegex.exec(response))) {\n return new InitSummary(bare, path, true, result[1]);\n }\n\n let gitDir = '';\n const tokens = response.split(' ');\n while (tokens.length) {\n const token = tokens.shift();\n if (token === 'in') {\n gitDir = tokens.join(' ');\n break;\n }\n }\n\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\n","import { InitResult } from '../../../typings';\nimport { parseInit } from '../responses/InitSummary';\nimport { StringTask } from '../types';\n\nconst bareCommand = '--bare';\n\nfunction hasBareCommand(command: string[]) {\n return command.includes(bareCommand);\n}\n\nexport function initTask(bare = false, path: string, customArgs: string[]): StringTask<InitResult> {\n const commands = ['init', ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): InitResult {\n return parseInit(commands.includes('--bare'), path, text);\n },\n };\n}\n","export enum LogFormat {\n NONE = '',\n STAT = '--stat',\n NUM_STAT = '--numstat',\n NAME_ONLY = '--name-only',\n NAME_STATUS = '--name-status',\n}\n\nconst logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n\nexport function logFormatFromCommand(customArgs: string[]) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}` as LogFormat;\n }\n }\n\n return LogFormat.NONE;\n}\n\nexport function isLogFormat(customArg: string | unknown) {\n return logFormatRegex.test(customArg as string);\n}\n","import { DiffResult, DiffResultBinaryFile, DiffResultTextFile } from '../../../typings';\n\n/***\n * The DiffSummary is returned as a response to getting `git().status()`\n */\nexport class DiffSummary implements DiffResult {\n changed = 0;\n deletions = 0;\n insertions = 0;\n\n files: Array<DiffResultTextFile | DiffResultBinaryFile> = [];\n}\n","import { DiffResult } from '../../../typings';\nimport { LogFormat } from '../args/log-format';\nimport { DiffSummary } from '../responses/DiffSummary';\nimport { isDiffNameStatus } from '../tasks/diff-name-status';\nimport { asNumber, LineParser, orVoid, parseStringResponse } from '../utils';\n\nconst statParser = [\n new LineParser<DiffResult>(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = '']) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, '').length,\n deletions: alterations.replace(/[^-]/g, '').length,\n binary: false,\n });\n }\n ),\n new LineParser<DiffResult>(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true,\n });\n }\n ),\n new LineParser<DiffResult>(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n ),\n];\n\nconst numStatParser = [\n new LineParser<DiffResult>(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false,\n });\n }\n ),\n new LineParser<DiffResult>(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true,\n });\n }),\n];\n\nconst nameOnlyParser = [\n new LineParser<DiffResult>(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n });\n }),\n];\n\nconst nameStatusParser = [\n new LineParser<DiffResult>(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity),\n });\n }\n ),\n];\n\nconst diffSummaryParsers: Record<LogFormat, LineParser<DiffResult>[]> = {\n [LogFormat.NONE]: statParser,\n [LogFormat.STAT]: statParser,\n [LogFormat.NUM_STAT]: numStatParser,\n [LogFormat.NAME_STATUS]: nameStatusParser,\n [LogFormat.NAME_ONLY]: nameOnlyParser,\n};\n\nexport function getDiffParser(format = LogFormat.NONE) {\n const parser = diffSummaryParsers[format];\n\n return (stdOut: string) => parseStringResponse(new DiffSummary(), parser, stdOut, false);\n}\n","import { ListLogLine, LogResult } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\nimport { getDiffParser } from './parse-diff-summary';\nimport { LogFormat } from '../args/log-format';\n\nexport const START_BOUNDARY = '\u00F2\u00F2\u00F2\u00F2\u00F2\u00F2 ';\n\nexport const COMMIT_BOUNDARY = ' \u00F2\u00F2';\n\nexport const SPLITTER = ' \u00F2 ';\n\nconst defaultFieldNames = ['hash', 'date', 'message', 'refs', 'author_name', 'author_email'];\n\nfunction lineBuilder(tokens: string[], fields: string[]): any {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || '';\n return line;\n },\n Object.create({ diff: null }) as any\n );\n}\n\nexport function createListLogSummaryParser<T = any>(\n splitter = SPLITTER,\n fields = defaultFieldNames,\n logFormat = LogFormat.NONE\n) {\n const parseDiffResult = getDiffParser(logFormat);\n\n return function (stdOut: string): LogResult<T> {\n const all: ReadonlyArray<T & ListLogLine> = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function (item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine: T & ListLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n\n return listLogLine;\n });\n\n return {\n all,\n latest: (all.length && all[0]) || null,\n total: all.length,\n };\n };\n}\n","import { StringTask } from '../types';\nimport { DiffResult } from '../../../typings';\nimport { isLogFormat, LogFormat, logFormatFromCommand } from '../args/log-format';\nimport { getDiffParser } from '../parsers/parse-diff-summary';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function diffSummaryTask(customArgs: string[]): StringTask<DiffResult> | EmptyTask {\n let logFormat = logFormatFromCommand(customArgs);\n\n const commands = ['diff'];\n\n if (logFormat === LogFormat.NONE) {\n logFormat = LogFormat.STAT;\n commands.push('--stat=4096');\n }\n\n commands.push(...customArgs);\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser: getDiffParser(logFormat),\n }\n );\n}\n\nexport function validateLogFormatConfig(customArgs: unknown[]): EmptyTask | void {\n const flags = customArgs.filter(isLogFormat);\n\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(',')}`\n );\n }\n\n if (flags.length && customArgs.includes('-z')) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\n","import type { LogResult, Options, SimpleGit } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport { pathspec } from '../args/pathspec';\nimport {\n COMMIT_BOUNDARY,\n createListLogSummaryParser,\n SPLITTER,\n START_BOUNDARY,\n} from '../parsers/parse-list-log-summary';\nimport {\n appendTaskOptions,\n asStringArray,\n filterArray,\n filterPlainObject,\n filterString,\n filterType,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} from '../utils';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { configurationErrorTask } from './task';\nimport { validateLogFormatConfig } from './diff';\nimport { StringTask } from '../types';\n\nenum excludeOptions {\n '--pretty',\n 'max-count',\n 'maxCount',\n 'n',\n 'file',\n 'format',\n 'from',\n 'to',\n 'splitter',\n 'symmetric',\n 'mailMap',\n 'multiLine',\n 'strictDate',\n}\n\nexport interface DefaultLogFields {\n hash: string;\n date: string;\n message: string;\n refs: string;\n body: string;\n author_name: string;\n author_email: string;\n}\n\nexport type LogOptions<T = DefaultLogFields> = {\n file?: string;\n format?: T;\n from?: string;\n mailMap?: boolean;\n maxCount?: number;\n multiLine?: boolean;\n splitter?: string;\n strictDate?: boolean;\n symmetric?: boolean;\n to?: string;\n};\n\ninterface ParsedLogOptions {\n fields: string[];\n splitter: string;\n commands: string[];\n}\n\nfunction prettyFormat(\n format: Record<string, string | unknown>,\n splitter: string\n): [string[], string] {\n const fields: string[] = [];\n const formatStr: string[] = [];\n\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n\n return [fields, formatStr.join(splitter)];\n}\n\nfunction userOptions<T extends Options>(input: T): Options {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {} as Options);\n}\n\nexport function parseLogOptions<T extends Options>(\n opt: Options | LogOptions<T> = {},\n customArgs: string[] = []\n): ParsedLogOptions {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format)\n ? opt.format\n : {\n hash: '%H',\n date: opt.strictDate === false ? '%ai' : '%aI',\n message: '%s',\n refs: '%D',\n body: opt.multiLine ? '%B' : '%b',\n author_name: opt.mailMap !== false ? '%aN' : '%an',\n author_email: opt.mailMap !== false ? '%aE' : '%ae',\n };\n\n const [fields, formatStr] = prettyFormat(format, splitter);\n\n const suffix: string[] = [];\n const command: string[] = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs,\n ];\n\n const maxCount: number | undefined = (opt as any).n || (opt as any)['max-count'] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? '...' : '..';\n suffix.push(`${opt.from || ''}${rangeOperator}${opt.to || ''}`);\n }\n\n if (filterString(opt.file)) {\n command.push('--follow', pathspec(opt.file));\n }\n\n appendTaskOptions(userOptions(opt as Options), command);\n\n return {\n fields,\n splitter,\n commands: [...command, ...suffix],\n };\n}\n\nexport function logTask<T>(\n splitter: string,\n fields: string[],\n customArgs: string[]\n): StringTask<LogResult<T>> {\n const parser = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n\n return {\n commands: ['log', ...customArgs],\n format: 'utf-8',\n parser,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'log'> {\n return {\n log<T extends Options>(this: SimpleGitApi, ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions<T>(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task =\n rejectDeprecatedSignatures(...rest) ||\n validateLogFormatConfig(options.commands) ||\n createLogTask(options);\n\n return this._runTask(task, next);\n },\n };\n\n function createLogTask(options: ParsedLogOptions) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n\n function rejectDeprecatedSignatures(from?: unknown, to?: unknown) {\n return (\n filterString(from) &&\n filterString(to) &&\n configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n )\n );\n }\n}\n","import {\n MergeConflict,\n MergeConflictDeletion,\n MergeDetail,\n MergeResultStatus,\n} from '../../../typings';\n\nexport class MergeSummaryConflict implements MergeConflict {\n constructor(\n public readonly reason: string,\n public readonly file: string | null = null,\n public readonly meta?: MergeConflictDeletion\n ) {}\n\n toString() {\n return `${this.file}:${this.reason}`;\n }\n}\n\nexport class MergeSummaryDetail implements MergeDetail {\n public conflicts: MergeConflict[] = [];\n public merges: string[] = [];\n public result: MergeResultStatus = 'success';\n\n get failed() {\n return this.conflicts.length > 0;\n }\n\n get reason() {\n return this.result;\n }\n\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(', ')}`;\n }\n\n return 'OK';\n }\n}\n","import {\n PullDetailFileChanges,\n PullDetailSummary,\n PullFailedResult,\n PullResult,\n} from '../../../typings';\n\nexport class PullSummary implements PullResult {\n public remoteMessages = {\n all: [],\n };\n public created = [];\n public deleted: string[] = [];\n public files: string[] = [];\n public deletions: PullDetailFileChanges = {};\n public insertions: PullDetailFileChanges = {};\n public summary: PullDetailSummary = {\n changes: 0,\n deletions: 0,\n insertions: 0,\n };\n}\n\nexport class PullFailedSummary implements PullFailedResult {\n remote = '';\n hash = {\n local: '',\n remote: '',\n };\n branch = {\n local: '',\n remote: '',\n };\n message = '';\n\n toString() {\n return this.message;\n }\n}\n","import {\n RemoteMessageResult,\n RemoteMessages,\n RemoteMessagesObjectEnumeration,\n} from '../../../typings';\nimport { asNumber, RemoteLineParser } from '../utils';\n\nfunction objectEnumerationResult<T extends RemoteMessages = RemoteMessages>(\n remoteMessages: T\n): RemoteMessagesObjectEnumeration {\n return (remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 },\n });\n}\n\nfunction asObjectCount(source: string) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n\n return {\n count: asNumber((count && count[1]) || '0'),\n delta: asNumber((delta && delta[1]) || '0'),\n };\n}\n\nexport const remoteMessagesObjectParsers: RemoteLineParser<RemoteMessageResult<RemoteMessages>>[] =\n [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n ),\n ];\n","import { PushResultRemoteMessages, RemoteMessageResult, RemoteMessages } from '../../../typings';\nimport { asNumber, parseStringResponse, RemoteLineParser } from '../utils';\nimport { remoteMessagesObjectParsers } from './parse-remote-objects';\n\nconst parsers: RemoteLineParser<RemoteMessageResult<PushResultRemoteMessages | RemoteMessages>>[] =\n [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n (result.remoteMessages as PushResultRemoteMessages).pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n (result.remoteMessages as PushResultRemoteMessages).vulnerabilities = {\n count: asNumber(count),\n summary,\n url,\n };\n }\n ),\n ];\n\nexport function parseRemoteMessages<T extends RemoteMessages = RemoteMessages>(\n _stdOut: string,\n stdErr: string\n): RemoteMessageResult {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() as T }, parsers, stdErr);\n}\n\nexport class RemoteMessageSummary implements RemoteMessages {\n public readonly all: string[] = [];\n}\n","import { PullDetail, PullFailedResult, PullResult, RemoteMessages } from '../../../typings';\nimport { PullFailedSummary, PullSummary } from '../responses/PullSummary';\nimport { TaskParser } from '../types';\nimport { append, LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nconst FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\nconst SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\nconst ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n\nconst parsers: LineParser<PullResult>[] = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== undefined || deletions !== undefined) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === 'create' ? result.created : result.deleted, file);\n }),\n];\n\nconst errorParsers: LineParser<PullFailedResult>[] = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n ),\n];\n\nexport const parsePullDetail: TaskParser<string, PullDetail> = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers, [stdOut, stdErr]);\n};\n\nexport const parsePullResult: TaskParser<string, PullResult> = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages<RemoteMessages>(stdOut, stdErr)\n );\n};\n\nexport function parsePullErrorResult(stdOut: string, stdErr: string) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n\n return pullError.message && pullError;\n}\n","import { MergeDetail, MergeResult } from '../../../typings';\nimport { MergeSummaryConflict, MergeSummaryDetail } from '../responses/MergeSummary';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parsePullResult } from './parse-pull';\n\nconst parsers: LineParser<MergeDetail>[] = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n }),\n];\n\n/**\n * Parse the complete response from `git.merge`\n */\nexport const parseMergeResult: TaskParser<string, MergeResult> = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n};\n\n/**\n * Parse the merge specific detail (ie: not the content also available in the pull detail) from `git.mnerge`\n * @param stdOut\n */\nexport const parseMergeDetail: TaskParser<string, MergeDetail> = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers, stdOut);\n};\n","import { MergeResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parseMergeResult } from '../parsers/parse-merge';\nimport { StringTask } from '../types';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function mergeTask(customArgs: string[]): EmptyTask | StringTask<MergeResult> {\n if (!customArgs.length) {\n return configurationErrorTask('Git.merge requires at least one option');\n }\n\n return {\n commands: ['merge', ...customArgs],\n format: 'utf-8',\n parser(stdOut, stdErr): MergeResult {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n\n return merge;\n },\n };\n}\n","import {\n PushDetail,\n PushResult,\n PushResultPushedItem,\n PushResultRemoteMessages,\n} from '../../../typings';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nfunction pushResultPushedItem(local: string, remote: string, status: string): PushResultPushedItem {\n const deleted = status.includes('deleted');\n const tag = status.includes('tag') || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes('new');\n\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote,\n };\n}\n\nconst parsers: LineParser<PushDetail>[] = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...(result.ref || {}),\n local,\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...(result.branch || {}),\n local,\n remote,\n remoteName,\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote,\n },\n hash: {\n from,\n to,\n },\n };\n }\n ),\n];\n\nexport const parsePushResult: TaskParser<string, PushResult> = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages<PushResultRemoteMessages>(stdOut, stdErr);\n\n return {\n ...pushDetail,\n ...responseDetail,\n };\n};\n\nexport const parsePushDetail: TaskParser<string, PushDetail> = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers, [stdOut, stdErr]);\n};\n","import { PushResult } from '../../../typings';\nimport { parsePushResult as parser } from '../parsers/parse-push';\nimport { StringTask } from '../types';\nimport { append, remove } from '../utils';\n\ntype PushRef = { remote?: string; branch?: string };\n\nexport function pushTagsTask(ref: PushRef = {}, customArgs: string[]): StringTask<PushResult> {\n append(customArgs, '--tags');\n return pushTask(ref, customArgs);\n}\n\nexport function pushTask(ref: PushRef = {}, customArgs: string[]): StringTask<PushResult> {\n const commands = ['push', ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n\n remove(commands, '-v');\n append(commands, '--verbose');\n append(commands, '--porcelain');\n\n return {\n commands,\n format: 'utf-8',\n parser,\n };\n}\n","import { SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, trailingFunctionArgument } from '../utils';\nimport { straightThroughBufferTask, straightThroughStringTask } from './task';\n\nexport default function (): Pick<SimpleGit, 'showBuffer' | 'show'> {\n return {\n showBuffer(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n if (!commands.includes('--binary')) {\n commands.splice(1, 0, '--binary');\n }\n\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n\n show(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import { FileStatusResult } from '../../../typings';\n\nexport const fromPathRegex = /^(.+)\\0(.+)$/;\n\nexport class FileStatusSummary implements FileStatusResult {\n public readonly from: string | undefined;\n\n constructor(\n public path: string,\n public index: string,\n public working_dir: string\n ) {\n if (index === 'R' || working_dir === 'R') {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || '';\n this.path = detail[1] || '';\n }\n }\n}\n","import { StatusResult } from '../../../typings';\nimport { append, filterString, filterType, NULL } from '../utils';\nimport { FileStatusSummary } from './FileStatusSummary';\n\ntype StatusLineParser = (result: StatusResult, file: string) => void;\n\nexport class StatusSummary implements StatusResult {\n public not_added = [];\n public conflicted = [];\n public created = [];\n public deleted = [];\n public ignored = undefined;\n public modified = [];\n public renamed = [];\n public files = [];\n public staged = [];\n public ahead = 0;\n public behind = 0;\n public current = null;\n public tracking = null;\n public detached = false;\n\n public isClean = () => {\n return !this.files.length;\n };\n}\n\nenum PorcelainFileStatus {\n ADDED = 'A',\n DELETED = 'D',\n MODIFIED = 'M',\n RENAMED = 'R',\n COPIED = 'C',\n UNMERGED = 'U',\n UNTRACKED = '?',\n IGNORED = '!',\n NONE = ' ',\n}\n\nfunction renamedFile(line: string) {\n const [to, from] = line.split(NULL);\n\n return {\n from: from || to,\n to,\n };\n}\n\nfunction parser(\n indexX: PorcelainFileStatus,\n indexY: PorcelainFileStatus,\n handler: StatusLineParser\n): [string, StatusLineParser] {\n return [`${indexX}${indexY}`, handler];\n}\n\nfunction conflicts(indexX: PorcelainFileStatus, ...indexY: PorcelainFileStatus[]) {\n return indexY.map((y) => parser(indexX, y, (result, file) => append(result.conflicted, file)));\n}\n\nconst parsers: Map<string, StatusLineParser> = new Map([\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.ADDED, (result, file) =>\n append(result.created, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.DELETED, (result, file) =>\n append(result.deleted, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.MODIFIED, (result, file) =>\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.created, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.MODIFIED,\n (result, file) =>\n append(result.created, file) &&\n append(result.staged, file) &&\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.deleted, file) && append(result.staged, file)\n ),\n\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.MODIFIED,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.NONE, (result, file) => {\n append(result.renamed, renamedFile(file));\n }),\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.MODIFIED, (result, file) => {\n const renamed = renamedFile(file);\n append(result.renamed, renamed);\n append(result.modified, renamed.to);\n }),\n parser(PorcelainFileStatus.IGNORED, PorcelainFileStatus.IGNORED, (_result, _file) => {\n append((_result.ignored = _result.ignored || []), _file);\n }),\n\n parser(PorcelainFileStatus.UNTRACKED, PorcelainFileStatus.UNTRACKED, (result, file) =>\n append(result.not_added, file)\n ),\n\n ...conflicts(PorcelainFileStatus.ADDED, PorcelainFileStatus.ADDED, PorcelainFileStatus.UNMERGED),\n ...conflicts(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n ...conflicts(\n PorcelainFileStatus.UNMERGED,\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n\n [\n '##',\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n\n let regexResult = aheadReg.exec(line);\n result.ahead = (regexResult && +regexResult[1]) || 0;\n\n regexResult = behindReg.exec(line);\n result.behind = (regexResult && +regexResult[1]) || 0;\n\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n\n result.detached = /\\(no branch\\)/.test(line);\n },\n ],\n]);\n\nexport const parseStatusSummary = function (text: string): StatusResult {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n\n if (!line) {\n continue;\n }\n\n if (line.charAt(0) === PorcelainFileStatus.RENAMED) {\n line += NULL + (lines[i++] || '');\n }\n\n splitLine(status, line);\n }\n\n return status;\n};\n\nfunction splitLine(result: StatusResult, lineStr: string) {\n const trimmed = lineStr.trim();\n switch (' ') {\n case trimmed.charAt(2):\n return data(trimmed.charAt(0), trimmed.charAt(1), trimmed.substr(3));\n case trimmed.charAt(1):\n return data(PorcelainFileStatus.NONE, trimmed.charAt(0), trimmed.substr(2));\n default:\n return;\n }\n\n function data(index: string, workingDir: string, path: string) {\n const raw = `${index}${workingDir}`;\n const handler = parsers.get(raw);\n\n if (handler) {\n handler(result, path);\n }\n\n if (raw !== '##' && raw !== '!!') {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\n","import { StatusResult } from '../../../typings';\nimport { parseStatusSummary } from '../responses/StatusSummary';\nimport { StringTask } from '../types';\n\nconst ignoredOptions = ['--null', '-z'];\n\nexport function statusTask(customArgs: string[]): StringTask<StatusResult> {\n const commands = [\n 'status',\n '--porcelain',\n '-b',\n '-u',\n '--null',\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg)),\n ];\n\n return {\n format: 'utf-8',\n commands,\n parser(text: string) {\n return parseStatusSummary(text);\n },\n };\n}\n","import type { SimpleGitApi } from '../simple-git-api';\nimport type { SimpleGit } from '../../../typings';\nimport { asNumber, ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nexport interface VersionResult {\n major: number;\n minor: number;\n patch: number | string;\n agent: string;\n installed: boolean;\n}\n\nconst NOT_INSTALLED = 'installed=false';\n\nfunction versionResponse(\n major = 0,\n minor = 0,\n patch: string | number = 0,\n agent = '',\n installed = true\n): VersionResult {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed,\n },\n 'toString',\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false,\n }\n );\n}\n\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, '', false);\n}\n\nexport default function (): Pick<SimpleGit, 'version'> {\n return {\n version(this: SimpleGitApi) {\n return this._runTask({\n commands: ['--version'],\n format: 'utf-8',\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === ExitCodes.NOT_FOUND) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n\n fail(error);\n },\n });\n },\n };\n}\n\nconst parsers: LineParser<VersionResult>[] = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n ),\n];\n\nfunction versionParser(stdOut: string) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers, stdOut);\n}\n","import { SimpleGitBase } from '../../typings';\nimport { taskCallback } from './task-callback';\nimport { changeWorkingDirectoryTask } from './tasks/change-working-directory';\nimport checkout from './tasks/checkout';\nimport countObjects from './tasks/count-objects';\nimport commit from './tasks/commit';\nimport config from './tasks/config';\nimport firstCommit from './tasks/first-commit';\nimport grep from './tasks/grep';\nimport { hashObjectTask } from './tasks/hash-object';\nimport { initTask } from './tasks/init';\nimport log from './tasks/log';\nimport { mergeTask } from './tasks/merge';\nimport { pushTask } from './tasks/push';\nimport show from './tasks/show';\nimport { statusTask } from './tasks/status';\nimport { configurationErrorTask, straightThroughStringTask } from './tasks/task';\nimport version from './tasks/version';\nimport { outputHandler, SimpleGitExecutor, SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport {\n asArray,\n filterString,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n} from './utils';\n\nexport class SimpleGitApi implements SimpleGitBase {\n constructor(private _executor: SimpleGitExecutor) {}\n\n protected _runTask<T>(task: SimpleGitTask<T>, then?: SimpleGitTaskCallback<T>) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n\n if (then) {\n taskCallback(task, promise, then);\n }\n\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain },\n });\n }\n\n add(files: string | string[]) {\n return this._runTask(\n straightThroughStringTask(['add', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n cwd(directory: string | { path: string; root?: boolean }) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof directory === 'string') {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n\n if (typeof directory?.path === 'string') {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n (directory.root && this._executor) || undefined\n ),\n next\n );\n }\n\n return this._runTask(\n configurationErrorTask('Git.cwd: workingDirectory must be supplied as a string'),\n next\n );\n }\n\n hashObject(path: string, write: boolean | unknown) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n\n init(bare?: boolean | unknown) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n mergeFromTo(remote: string, branch: string) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n\n outputHandler(handler: outputHandler) {\n this._executor.outputHandler = handler;\n return this;\n }\n\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString),\n },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n\n stash() {\n return this._runTask(\n straightThroughStringTask(['stash', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n}\n\nObject.assign(\n SimpleGitApi.prototype,\n checkout(),\n commit(),\n config(),\n countObjects(),\n firstCommit(),\n grep(),\n log(),\n show(),\n version()\n);\n","import { append, remove } from '../utils';\nimport { createDeferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { createLogger } from '../git-logger';\n\ntype ScheduleCompleteCallback = () => void;\ntype ScheduledTask = Pick<DeferredPromise<ScheduleCompleteCallback>, 'promise' | 'done'> & {\n id: number;\n};\n\nconst createScheduledTask: () => ScheduledTask = (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred<ScheduleCompleteCallback>();\n\n return {\n promise,\n done,\n id,\n };\n };\n})();\n\nexport class Scheduler {\n private logger = createLogger('', 'scheduler');\n private pending: ScheduledTask[] = [];\n private running: ScheduledTask[] = [];\n\n constructor(private concurrency = 2) {\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n\n private schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n\n const task = append(this.running, this.pending.shift()!);\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n\n next(): Promise<ScheduleCompleteCallback> {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n\n this.schedule();\n\n return promise;\n }\n}\n","import { straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\n\nexport type ApplyOptions = Options &\n OptionFlags<\n | '--stat'\n | '--numstat'\n | '--summary'\n | '--check'\n | '--index'\n | '--intent-to-add'\n | '--3way'\n | '--apply'\n | '--no-add'\n | '-R'\n | '--reverse'\n | '--allow-binary-replacement'\n | '--binary'\n | '--reject'\n | '-z'\n | '--inaccurate-eof'\n | '--recount'\n | '--cached'\n | '--ignore-space-change'\n | '--ignore-whitespace'\n | '--verbose'\n | '--unsafe-paths'\n > &\n OptionFlags<'--whitespace', 'nowarn' | 'warn' | 'fix' | 'error' | 'error-all'> &\n OptionFlags<'--build-fake-ancestor' | '--exclude' | '--include' | '--directory', string> &\n OptionFlags<'-p' | '-C', number>;\n\nexport function applyPatchTask(patches: string[], customArgs: string[]): StringTask<string> {\n return straightThroughStringTask(['apply', ...customArgs, ...patches]);\n}\n","import {\n BranchMultiDeleteResult,\n BranchSingleDeleteFailure,\n BranchSingleDeleteResult,\n BranchSingleDeleteSuccess,\n} from '../../../typings';\n\nexport class BranchDeletionBatch implements BranchMultiDeleteResult {\n all: BranchSingleDeleteResult[] = [];\n branches: { [branchName: string]: BranchSingleDeleteResult } = {};\n errors: BranchSingleDeleteResult[] = [];\n\n get success(): boolean {\n return !this.errors.length;\n }\n}\n\nexport function branchDeletionSuccess(branch: string, hash: string): BranchSingleDeleteSuccess {\n return {\n branch,\n hash,\n success: true,\n };\n}\n\nexport function branchDeletionFailure(branch: string): BranchSingleDeleteFailure {\n return {\n branch,\n hash: null,\n success: false,\n };\n}\n\nexport function isSingleBranchDeleteFailure(\n test: BranchSingleDeleteResult\n): test is BranchSingleDeleteSuccess {\n return test.success;\n}\n","import { BranchMultiDeleteResult } from '../../../typings';\nimport {\n BranchDeletionBatch,\n branchDeletionFailure,\n branchDeletionSuccess,\n} from '../responses/BranchDeleteSummary';\nimport { TaskParser } from '../types';\nimport { ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nconst deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\nconst deleteErrorRegex = /^error[^']+'([^']+)'/m;\n\nconst parsers: LineParser<BranchMultiDeleteResult>[] = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n];\n\nexport const parseBranchDeletions: TaskParser<string, BranchMultiDeleteResult> = (\n stdOut,\n stdErr\n) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers, [stdOut, stdErr]);\n};\n\nexport function hasBranchDeletionError(data: string, processExitCode: ExitCodes): boolean {\n return processExitCode === ExitCodes.ERROR && deleteErrorRegex.test(data);\n}\n","import type { BranchSummary, BranchSummaryBranch } from '../../../typings';\n\nexport enum BranchStatusIdentifier {\n CURRENT = '*',\n LINKED = '+',\n}\n\nexport class BranchSummaryResult implements BranchSummary {\n public all: string[] = [];\n public branches: { [p: string]: BranchSummaryBranch } = {};\n public current: string = '';\n public detached: boolean = false;\n\n push(\n status: BranchStatusIdentifier | unknown,\n detached: boolean,\n name: string,\n commit: string,\n label: string\n ) {\n if (status === BranchStatusIdentifier.CURRENT) {\n this.detached = detached;\n this.current = name;\n }\n\n this.all.push(name);\n this.branches[name] = {\n current: status === BranchStatusIdentifier.CURRENT,\n linkedWorkTree: status === BranchStatusIdentifier.LINKED,\n name,\n commit,\n label,\n };\n }\n}\n","import type { BranchSummary } from '../../../typings';\nimport { BranchStatusIdentifier, BranchSummaryResult } from '../responses/BranchSummary';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<BranchSummaryResult>[] = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n ),\n];\n\nconst currentBranchParser = new LineParser<BranchSummaryResult>(/^(\\S+)$/s, (result, [name]) => {\n result.push(BranchStatusIdentifier.CURRENT, false, name, '', '');\n});\n\nfunction branchStatus(input?: string) {\n return input ? input.charAt(0) : '';\n}\n\nexport function parseBranchSummary(stdOut: string, currentOnly = false): BranchSummary {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers,\n stdOut\n );\n}\n","import { BranchMultiDeleteResult, BranchSingleDeleteResult, BranchSummary } from '../../../typings';\nimport { StringTask } from '../types';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { hasBranchDeletionError, parseBranchDeletions } from '../parsers/parse-branch-delete';\nimport { parseBranchSummary } from '../parsers/parse-branch';\nimport { bufferToString } from '../utils';\n\nexport function containsDeleteBranchCommand(commands: string[]) {\n const deleteCommands = ['-d', '-D', '--delete'];\n return commands.some((command) => deleteCommands.includes(command));\n}\n\nexport function branchTask(\n customArgs: string[]\n): StringTask<BranchSummary | BranchSingleDeleteResult> {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes('--show-current');\n\n const commands = ['branch', ...customArgs];\n\n if (commands.length === 1) {\n commands.push('-a');\n }\n\n if (!commands.includes('-v')) {\n commands.splice(1, 0, '-v');\n }\n\n return {\n format: 'utf-8',\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n\n return parseBranchSummary(stdOut, isCurrentOnly);\n },\n };\n}\n\nexport function branchLocalTask(): StringTask<BranchSummary> {\n return {\n format: 'utf-8',\n commands: ['branch', '-v'],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n },\n };\n}\n\nexport function deleteBranchesTask(\n branches: string[],\n forceDelete = false\n): StringTask<BranchMultiDeleteResult> {\n return {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n done(stdOut);\n },\n };\n}\n\nexport function deleteBranchTask(\n branch: string,\n forceDelete = false\n): StringTask<BranchSingleDeleteResult> {\n const task: StringTask<BranchSingleDeleteResult> = {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch]!;\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n },\n };\n\n return task;\n}\n","import { normalize } from 'node:path';\n\n/**\n * Parser for the `check-ignore` command - returns each file as a string array\n */\nexport const parseCheckIgnore = (text: string): string[] => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n};\n\nfunction toPath(input: string) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, '');\n return path && normalize(path);\n}\n","import { StringTask } from '../types';\nimport { parseCheckIgnore } from '../responses/CheckIgnore';\n\nexport function checkIgnoreTask(paths: string[]): StringTask<string[]> {\n return {\n commands: ['check-ignore', ...paths],\n format: 'utf-8',\n parser: parseCheckIgnore,\n };\n}\n","import { configurationErrorTask, EmptyTask, straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\nimport { append, filterString } from '../utils';\n\nexport type CloneOptions = Options &\n OptionFlags<\n | '--bare'\n | '--dissociate'\n | '--mirror'\n | '--no-checkout'\n | '--no-remote-submodules'\n | '--no-shallow-submodules'\n | '--no-single-branch'\n | '--no-tags'\n | '--remote-submodules'\n | '--single-branch'\n | '--shallow-submodules'\n | '--verbose'\n > &\n OptionFlags<'--depth' | '-j' | '--jobs', number> &\n OptionFlags<\n | '--branch'\n | '--origin'\n | '--recurse-submodules'\n | '--separate-git-dir'\n | '--shallow-exclude'\n | '--shallow-since'\n | '--template',\n string\n >;\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function cloneTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n): StringTask<string> | EmptyTask {\n const commands = ['clone', ...customArgs];\n\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function cloneMirrorTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n) {\n append(customArgs, '--mirror');\n\n return cloneTask(repo, directory, customArgs);\n}\n","import { FetchResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<FetchResult>[] = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking,\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking,\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking,\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from,\n });\n }\n ),\n];\n\nexport function parseFetchResult(stdOut: string, stdErr: string): FetchResult {\n const result: FetchResult = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: [],\n };\n return parseStringResponse(result, parsers, [stdOut, stdErr]);\n}\n","import { FetchResult } from '../../../typings';\nimport { parseFetchResult } from '../parsers/parse-fetch';\nimport { StringTask } from '../types';\n\nimport { configurationErrorTask, EmptyTask } from './task';\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function fetchTask(\n remote: string,\n branch: string,\n customArgs: string[]\n): StringTask<FetchResult> | EmptyTask {\n const commands = ['fetch', ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: parseFetchResult,\n };\n}\n","import { MoveResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<MoveResult>[] = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n }),\n];\n\nexport function parseMoveResult(stdOut: string): MoveResult {\n return parseStringResponse({ moves: [] }, parsers, stdOut);\n}\n","import { MoveResult } from '../../../typings';\nimport { parseMoveResult } from '../parsers/parse-move';\nimport { StringTask } from '../types';\nimport { asArray } from '../utils';\n\nexport function moveTask(from: string | string[], to: string): StringTask<MoveResult> {\n return {\n commands: ['mv', '-v', ...asArray(from), to],\n format: 'utf-8',\n parser: parseMoveResult,\n };\n}\n","import { PullResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parsePullErrorResult, parsePullResult } from '../parsers/parse-pull';\nimport { Maybe, StringTask } from '../types';\nimport { bufferToString } from '../utils';\n\nexport function pullTask(\n remote: Maybe<string>,\n branch: Maybe<string>,\n customArgs: string[]\n): StringTask<PullResult> {\n const commands: string[] = ['pull', ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(stdOut, stdErr): PullResult {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n\n fail(_error);\n },\n };\n}\n","import { forEachLineWithContent } from '../utils';\n\nexport interface RemoteWithoutRefs {\n name: string;\n}\n\nexport interface RemoteWithRefs extends RemoteWithoutRefs {\n refs: {\n fetch: string;\n push: string;\n };\n}\n\nexport function parseGetRemotes(text: string): RemoteWithoutRefs[] {\n const remotes: { [name: string]: RemoteWithoutRefs } = {};\n\n forEach(text, ([name]) => (remotes[name] = { name }));\n\n return Object.values(remotes);\n}\n\nexport function parseGetRemotesVerbose(text: string): RemoteWithRefs[] {\n const remotes: { [name: string]: RemoteWithRefs } = {};\n\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name: name,\n refs: { fetch: '', push: '' },\n };\n }\n\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, '') as keyof RemoteWithRefs['refs']] = url;\n }\n });\n\n return Object.values(remotes);\n}\n\nfunction forEach(text: string, handler: (line: string[]) => void) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\n","import {\n parseGetRemotes,\n parseGetRemotesVerbose,\n type RemoteWithoutRefs,\n type RemoteWithRefs,\n} from '../responses/GetRemoteSummary';\nimport type { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addRemoteTask(\n remoteName: string,\n remoteRepo: string,\n customArgs: string[]\n): StringTask<string> {\n return straightThroughStringTask(['remote', 'add', ...customArgs, remoteName, remoteRepo]);\n}\n\nexport function getRemotesTask(verbose: true): StringTask<RemoteWithRefs[]>;\nexport function getRemotesTask(verbose: false): StringTask<RemoteWithoutRefs[]>;\nexport function getRemotesTask(\n verbose: boolean\n): StringTask<RemoteWithRefs[] | RemoteWithoutRefs[]> {\n const commands = ['remote'];\n if (verbose) {\n commands.push('-v');\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes,\n };\n}\n\nexport function listRemotesTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'ls-remote') {\n commands.unshift('ls-remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function remoteTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'remote') {\n commands.unshift('remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function removeRemoteTask(remoteName: string) {\n return straightThroughStringTask(['remote', 'remove', remoteName]);\n}\n","import { LogOptions, LogResult } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport { createListLogSummaryParser } from '../parsers/parse-list-log-summary';\nimport type { StringTask } from '../types';\nimport { validateLogFormatConfig } from './diff';\nimport { parseLogOptions } from './log';\nimport type { EmptyTask } from './task';\n\nexport function stashListTask(\n opt: LogOptions = {},\n customArgs: string[]\n): EmptyTask | StringTask<LogResult> {\n const options = parseLogOptions<any>(opt);\n const commands = ['stash', 'list', ...options.commands, ...customArgs];\n const parser = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser,\n }\n );\n}\n","import { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addSubModuleTask(repo: string, path: string): StringTask<string> {\n return subModuleTask(['add', repo, path]);\n}\n\nexport function initSubModuleTask(customArgs: string[]): StringTask<string> {\n return subModuleTask(['init', ...customArgs]);\n}\n\nexport function subModuleTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'submodule') {\n commands.unshift('submodule');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function updateSubModuleTask(customArgs: string[]): StringTask<string> {\n return subModuleTask(['update', ...customArgs]);\n}\n","import { TagResult } from '../../../typings';\n\nexport class TagList implements TagResult {\n constructor(\n public readonly all: string[],\n public readonly latest: string | undefined\n ) {}\n}\n\nexport const parseTagList = function (data: string, customSort = false) {\n const tags = data.split('\\n').map(trimmed).filter(Boolean);\n\n if (!customSort) {\n tags.sort(function (tagA, tagB) {\n const partsA = tagA.split('.');\n const partsB = tagB.split('.');\n\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n\n if (diff) {\n return diff;\n }\n }\n\n return 0;\n });\n }\n\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf('.') >= 0);\n\n return new TagList(tags, latest);\n};\n\nfunction singleSorted(a: number, b: number): number {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n\n return aIsNum ? sorted(a, b) : 0;\n}\n\nfunction sorted(a: number, b: number) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\n\nfunction trimmed(input: string) {\n return input.trim();\n}\n\nfunction toNumber(input: string | undefined) {\n if (typeof input === 'string') {\n return parseInt(input.replace(/^\\D+/g, ''), 10) || 0;\n }\n\n return 0;\n}\n","import { TagResult } from '../../../typings';\nimport { parseTagList } from '../responses/TagList';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.tags`\n */\nexport function tagListTask(customArgs: string[] = []): StringTask<TagResult> {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n\n return {\n format: 'utf-8',\n commands: ['tag', '-l', ...customArgs],\n parser(text: string) {\n return parseTagList(text, hasCustomSort);\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addTagTask(name: string): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', name],\n parser() {\n return { name };\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addAnnotatedTagTask(\n name: string,\n tagMessage: string\n): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', '-a', '-m', tagMessage, name],\n parser() {\n return { name };\n },\n };\n}\n","const { GitExecutor } = require('./lib/runners/git-executor');\nconst { SimpleGitApi } = require('./lib/simple-git-api');\n\nconst { Scheduler } = require('./lib/runners/scheduler');\nconst { configurationErrorTask } = require('./lib/tasks/task');\nconst {\n asArray,\n filterArray,\n filterPrimitives,\n filterString,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} = require('./lib/utils');\nconst { applyPatchTask } = require('./lib/tasks/apply-patch');\nconst {\n branchTask,\n branchLocalTask,\n deleteBranchesTask,\n deleteBranchTask,\n} = require('./lib/tasks/branch');\nconst { checkIgnoreTask } = require('./lib/tasks/check-ignore');\nconst { checkIsRepoTask } = require('./lib/tasks/check-is-repo');\nconst { cloneTask, cloneMirrorTask } = require('./lib/tasks/clone');\nconst { cleanWithOptionsTask, isCleanOptionsArray } = require('./lib/tasks/clean');\nconst { diffSummaryTask } = require('./lib/tasks/diff');\nconst { fetchTask } = require('./lib/tasks/fetch');\nconst { moveTask } = require('./lib/tasks/move');\nconst { pullTask } = require('./lib/tasks/pull');\nconst { pushTagsTask } = require('./lib/tasks/push');\nconst {\n addRemoteTask,\n getRemotesTask,\n listRemotesTask,\n remoteTask,\n removeRemoteTask,\n} = require('./lib/tasks/remote');\nconst { getResetMode, resetTask } = require('./lib/tasks/reset');\nconst { stashListTask } = require('./lib/tasks/stash-list');\nconst {\n addSubModuleTask,\n initSubModuleTask,\n subModuleTask,\n updateSubModuleTask,\n} = require('./lib/tasks/sub-module');\nconst { addAnnotatedTagTask, addTagTask, tagListTask } = require('./lib/tasks/tag');\nconst { straightThroughBufferTask, straightThroughStringTask } = require('./lib/tasks/task');\n\nfunction Git(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor(\n options.baseDir,\n new Scheduler(options.maxConcurrentProcesses),\n plugins\n );\n\n this._trimmed = options.trimmed;\n}\n\n(Git.prototype = Object.create(SimpleGitApi.prototype)).constructor = Git;\n\n/**\n * Sets the path to a custom git binary, should either be `git` when there is an installation of git available on\n * the system path, or a fully qualified path to the executable.\n */\nGit.prototype.customBinary = function (command) {\n this._plugins.reconfigure('binary', command);\n return this;\n};\n\n/**\n * Sets an environment variable for the spawned child process, either supply both a name and value as strings or\n * a single object to entirely replace the current environment variables.\n *\n * @param {string|Object} name\n * @param {string} [value]\n * @returns {Git}\n */\nGit.prototype.env = function (name, value) {\n if (arguments.length === 1 && typeof name === 'object') {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n\n return this;\n};\n\n/**\n * List the stash(s) of the local repo\n */\nGit.prototype.stashList = function (options) {\n return this._runTask(\n stashListTask(\n trailingOptionsArgument(arguments) || {},\n (filterArray(options) && options) || []\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\nfunction createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== 'string') {\n return configurationErrorTask(`git.${api}() requires a string 'repoPath'`);\n }\n\n return task(repoPath, filterType(localPath, filterString), getTrailingOptions(arguments));\n}\n\n/**\n * Clone a git repo\n */\nGit.prototype.clone = function () {\n return this._runTask(\n createCloneTask('clone', cloneTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Mirror a git repo\n */\nGit.prototype.mirror = function () {\n return this._runTask(\n createCloneTask('mirror', cloneMirrorTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Moves one or more files to a new destination.\n *\n * @see https://git-scm.com/docs/git-mv\n *\n * @param {string|string[]} from\n * @param {string} to\n */\nGit.prototype.mv = function (from, to) {\n return this._runTask(moveTask(from, to), trailingFunctionArgument(arguments));\n};\n\n/**\n * Internally uses pull and tags to get the list of tags then checks out the latest tag.\n *\n * @param {Function} [then]\n */\nGit.prototype.checkoutLatestTag = function (then) {\n var git = this;\n return this.pull(function () {\n git.tags(function (err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n};\n\n/**\n * Pull the updated contents of the current repo\n */\nGit.prototype.pull = function (remote, branch, options, then) {\n return this._runTask(\n pullTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Fetch the updated contents of the current repo.\n *\n * @example\n * .fetch('upstream', 'master') // fetches from master on remote named upstream\n * .fetch(function () {}) // runs fetch against default remote and branch and calls function\n *\n * @param {string} [remote]\n * @param {string} [branch]\n */\nGit.prototype.fetch = function (remote, branch) {\n return this._runTask(\n fetchTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Disables/enables the use of the console for printing warnings and errors, by default messages are not shown in\n * a production environment.\n *\n * @param {boolean} silence\n * @returns {Git}\n */\nGit.prototype.silent = function (silence) {\n console.warn(\n 'simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3'\n );\n return this;\n};\n\n/**\n * List all tags. When using git 2.7.0 or above, include an options object with `\"--sort\": \"property-name\"` to\n * sort the tags by that property instead of using the default semantic versioning sort.\n *\n * Note, supplying this option when it is not supported by your Git version will cause the operation to fail.\n *\n * @param {Object} [options]\n * @param {Function} [then]\n */\nGit.prototype.tags = function (options, then) {\n return this._runTask(\n tagListTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Rebases the current working copy. Options can be supplied either as an array of string parameters\n * to be sent to the `git rebase` command, or a standard options object.\n */\nGit.prototype.rebase = function () {\n return this._runTask(\n straightThroughStringTask(['rebase', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Reset a repo\n */\nGit.prototype.reset = function (mode) {\n return this._runTask(\n resetTask(getResetMode(mode), getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Revert one or more commits in the local working copy\n */\nGit.prototype.revert = function (commit) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof commit !== 'string') {\n return this._runTask(configurationErrorTask('Commit must be a string'), next);\n }\n\n return this._runTask(\n straightThroughStringTask(['revert', ...getTrailingOptions(arguments, 0, true), commit]),\n next\n );\n};\n\n/**\n * Add a lightweight tag to the head of the current branch\n */\nGit.prototype.addTag = function (name) {\n const task =\n typeof name === 'string'\n ? addTagTask(name)\n : configurationErrorTask('Git.addTag requires a tag name');\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Add an annotated tag to the head of the current branch\n */\nGit.prototype.addAnnotatedTag = function (tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask(tagName, tagMessage),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete a local branch\n */\nGit.prototype.deleteLocalBranch = function (branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask(branchName, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete one or more local branches\n */\nGit.prototype.deleteLocalBranches = function (branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask(branchNames, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * List all branches\n *\n * @param {Object | string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.branch = function (options, then) {\n return this._runTask(\n branchTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Return list of local branches\n *\n * @param {Function} [then]\n */\nGit.prototype.branchLocal = function (then) {\n return this._runTask(branchLocalTask(), trailingFunctionArgument(arguments));\n};\n\n/**\n * Executes any command against the git binary.\n */\nGit.prototype.raw = function (commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n\n command.push(...getTrailingOptions(arguments, 0, true));\n\n var next = trailingFunctionArgument(arguments);\n\n if (!command.length) {\n return this._runTask(\n configurationErrorTask('Raw: must supply one or more command to execute'),\n next\n );\n }\n\n return this._runTask(straightThroughStringTask(command, this._trimmed), next);\n};\n\nGit.prototype.submoduleAdd = function (repo, path, then) {\n return this._runTask(addSubModuleTask(repo, path), trailingFunctionArgument(arguments));\n};\n\nGit.prototype.submoduleUpdate = function (args, then) {\n return this._runTask(\n updateSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.submoduleInit = function (args, then) {\n return this._runTask(\n initSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.subModule = function (options, then) {\n return this._runTask(\n subModuleTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.listRemote = function () {\n return this._runTask(\n listRemotesTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Adds a remote to the list of remotes.\n */\nGit.prototype.addRemote = function (remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask(remoteName, remoteRepo, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes an entry by name from the list of remotes.\n */\nGit.prototype.removeRemote = function (remoteName, then) {\n return this._runTask(removeRemoteTask(remoteName), trailingFunctionArgument(arguments));\n};\n\n/**\n * Gets the currently available remotes, setting the optional verbose argument to true includes additional\n * detail on the remotes themselves.\n */\nGit.prototype.getRemotes = function (verbose, then) {\n return this._runTask(getRemotesTask(verbose === true), trailingFunctionArgument(arguments));\n};\n\n/**\n * Call any `git remote` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.remote = function (options, then) {\n return this._runTask(\n remoteTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Call any `git tag` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.tag = function (options, then) {\n const command = getTrailingOptions(arguments);\n\n if (command[0] !== 'tag') {\n command.unshift('tag');\n }\n\n return this._runTask(straightThroughStringTask(command), trailingFunctionArgument(arguments));\n};\n\n/**\n * Updates repository server info\n *\n * @param {Function} [then]\n */\nGit.prototype.updateServerInfo = function (then) {\n return this._runTask(\n straightThroughStringTask(['update-server-info']),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Pushes the current tag changes to a remote which can be either a URL or named remote. When not specified uses the\n * default configured remote spec.\n *\n * @param {string} [remote]\n * @param {Function} [then]\n */\nGit.prototype.pushTags = function (remote, then) {\n const task = pushTagsTask(\n { remote: filterType(remote, filterString) },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Removes the named files from source control.\n */\nGit.prototype.rm = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '-f', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes the named files from source control but keeps them on disk rather than deleting them entirely. To\n * completely remove the files, use `rm`.\n *\n * @param {string|string[]} files\n */\nGit.prototype.rmKeepLocal = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '--cached', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Returns a list of objects in a tree based on commit hash. Passing in an object hash returns the object's content,\n * size, and type.\n *\n * Passing \"-p\" will instruct cat-file to determine the object type, and display its formatted contents.\n *\n * @param {string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.catFile = function (options, then) {\n return this._catFile('utf-8', arguments);\n};\n\nGit.prototype.binaryCatFile = function () {\n return this._catFile('buffer', arguments);\n};\n\nGit.prototype._catFile = function (format, args) {\n var handler = trailingFunctionArgument(args);\n var command = ['cat-file'];\n var options = args[0];\n\n if (typeof options === 'string') {\n return this._runTask(\n configurationErrorTask('Git.catFile: options must be supplied as an array of strings'),\n handler\n );\n }\n\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n\n const task =\n format === 'buffer' ? straightThroughBufferTask(command) : straightThroughStringTask(command);\n\n return this._runTask(task, handler);\n};\n\nGit.prototype.diff = function (options, then) {\n const task = filterString(options)\n ? configurationErrorTask(\n 'git.diff: supplying options as a single string is no longer supported, switch to an array of strings'\n )\n : straightThroughStringTask(['diff', ...getTrailingOptions(arguments)]);\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.diffSummary = function () {\n return this._runTask(\n diffSummaryTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.applyPatch = function (patches) {\n const task = !filterStringOrStringArray(patches)\n ? configurationErrorTask(\n `git.applyPatch requires one or more string patches as the first argument`\n )\n : applyPatchTask(asArray(patches), getTrailingOptions([].slice.call(arguments, 1)));\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.revparse = function () {\n const commands = ['rev-parse', ...getTrailingOptions(arguments, true)];\n return this._runTask(\n straightThroughStringTask(commands, true),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n */\nGit.prototype.clean = function (mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray(mode);\n const cleanMode =\n (usingCleanOptionsArray && mode.join('')) || filterType(mode, filterString) || '';\n const customArgs = getTrailingOptions([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n\n return this._runTask(\n cleanWithOptionsTask(cleanMode, customArgs),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.exec = function (then) {\n const task = {\n commands: [],\n format: 'utf-8',\n parser() {\n if (typeof then === 'function') {\n then();\n }\n },\n };\n\n return this._runTask(task);\n};\n\n/**\n * Clears the queue of pending commands and returns the wrapper instance for chaining.\n *\n * @returns {Git}\n */\nGit.prototype.clearQueue = function () {\n // TODO:\n // this._executor.clear();\n return this;\n};\n\n/**\n * Check if a pathname or pathnames are excluded by .gitignore\n *\n * @param {string|string[]} pathnames\n * @param {Function} [then]\n */\nGit.prototype.checkIgnore = function (pathnames, then) {\n return this._runTask(\n checkIgnoreTask(asArray(filterType(pathnames, filterStringOrStringArray, []))),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.checkIsRepo = function (checkType, then) {\n return this._runTask(\n checkIsRepoTask(filterType(checkType, filterString)),\n trailingFunctionArgument(arguments)\n );\n};\n\nmodule.exports = Git;\n","import { pathspec } from './args/pathspec';\nimport { GitConstructError } from './errors/git-construct-error';\nimport { GitError } from './errors/git-error';\nimport { GitPluginError } from './errors/git-plugin-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { TaskConfigurationError } from './errors/task-configuration-error';\nimport { CheckRepoActions } from './tasks/check-is-repo';\nimport { CleanOptions } from './tasks/clean';\nimport { GitConfigScope } from './tasks/config';\nimport { DiffNameStatus } from './tasks/diff-name-status';\nimport { grepQueryBuilder } from './tasks/grep';\nimport { ResetMode } from './tasks/reset';\n\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n grepQueryBuilder,\n pathspec,\n};\n","import { GitError } from './git-error';\nimport { SimpleGitOptions } from '../types';\n\n/**\n * The `GitConstructError` is thrown when an error occurs in the constructor\n * of the `simple-git` instance itself. Most commonly as a result of using\n * a `baseDir` option that points to a folder that either does not exist,\n * or cannot be read by the user the node script is running as.\n *\n * Check the `.message` property for more detail including the properties\n * passed to the constructor.\n */\nexport class GitConstructError extends GitError {\n constructor(\n public readonly config: SimpleGitOptions,\n message: string\n ) {\n super(undefined, message);\n }\n}\n","import { SimpleGitOptions, SimpleGitTask } from '../types';\nimport { GitError } from './git-error';\n\nexport class GitPluginError extends GitError {\n constructor(\n public task?: SimpleGitTask<any>,\n public readonly plugin?: keyof SimpleGitOptions,\n message?: string\n ) {\n super(task, message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { SimpleGitOptions } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function abortPlugin(signal: SimpleGitOptions['abort']) {\n if (!signal) {\n return;\n }\n\n const onSpawnAfter: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort signal received'));\n }\n\n signal.addEventListener('abort', kill);\n\n context.spawned.on('close', () => signal.removeEventListener('abort', kill));\n },\n };\n\n const onSpawnBefore: SimpleGitPlugin<'spawn.before'> = {\n type: 'spawn.before',\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort already signaled'));\n }\n },\n };\n\n return [onSpawnBefore, onSpawnAfter];\n}\n","import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport { GitPluginError } from '../errors/git-plugin-error';\nimport type { SimpleGitPluginConfig } from '../types';\n\nfunction isConfigSwitch(arg: string | unknown) {\n return typeof arg === 'string' && arg.trim().toLowerCase() === '-c';\n}\n\nfunction preventProtocolOverride(arg: string, next: string) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n\n throw new GitPluginError(\n undefined,\n 'unsafe',\n 'Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol'\n );\n}\n\nfunction preventUploadPack(arg: string, method: string) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'clone' && /^\\s*-u\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'push' && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\n\nexport function blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false,\n}: SimpleGitPluginConfig['unsafe'] = {}): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : '';\n\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n\n return args;\n },\n };\n}\n","import { prefixedArray } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function commandConfigPrefixingPlugin(\n configuration: string[]\n): SimpleGitPlugin<'spawn.args'> {\n const prefix = prefixedArray(configuration, '-c');\n\n return {\n type: 'spawn.args',\n action(data) {\n return [...prefix, ...data];\n },\n };\n}\n","import { deferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { SimpleGitPluginConfig } from '../types';\nimport { delay } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nconst never = deferred().promise;\n\nexport function completionDetectionPlugin({\n onClose = true,\n onExit = 50,\n}: SimpleGitPluginConfig['completion'] = {}): SimpleGitPlugin<'spawn.after'> {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred(),\n };\n\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise,\n ]);\n\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n\n return {\n close(code: number) {\n exitCode = code;\n events.close.done();\n },\n exit(code: number) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result,\n };\n }\n\n function configureTimeout(\n flag: boolean | number,\n event: DeferredPromise<void>,\n timeout: DeferredPromise<void>\n ) {\n if (flag === false) {\n return;\n }\n\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n\n return {\n type: 'spawn.after',\n async action(_data, { spawned, close }) {\n const events = createEvents();\n\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n\n spawned.stdout?.on('data', quickClose);\n spawned.stderr?.on('data', quickClose);\n spawned.on('error', quickClose);\n\n spawned.on('close', (code: number) => events.close(code));\n spawned.on('exit', (code: number) => events.exit(code));\n\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err as Error);\n }\n },\n };\n}\n","import type { SimpleGitOptions } from '../types';\n\nimport { GitPluginError } from '../errors/git-plugin-error';\nimport { asArray } from '../utils';\nimport { PluginStore } from './plugin-store';\n\nconst WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nconst WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\n\nfunction isBadArgument(arg: string) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_-]+)$/i.test(arg);\n}\n\nfunction toBinaryConfig(\n input: string[],\n allowUnsafe: boolean\n): { binary: string; prefix?: string } {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(undefined, 'binary', WRONG_NUMBER_ERR);\n }\n\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(undefined, 'binary', WRONG_CHARS_ERR);\n }\n }\n\n const [binary, prefix] = input;\n return {\n binary,\n prefix,\n };\n}\n\nexport function customBinaryPlugin(\n plugins: PluginStore,\n input: SimpleGitOptions['binary'] = ['git'],\n allowUnsafe = false\n) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n\n plugins.on('binary', (input) => {\n config = toBinaryConfig(asArray(input), allowUnsafe);\n });\n\n plugins.append('spawn.binary', () => {\n return config.binary;\n });\n\n plugins.append('spawn.args', (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n","import { GitError } from '../errors/git-error';\nimport { GitExecutorResult, SimpleGitPluginConfig } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\ntype TaskResult = Omit<GitExecutorResult, 'rejection'>;\n\nfunction isTaskError(result: TaskResult) {\n return !!(result.exitCode && result.stdErr.length);\n}\n\nfunction getErrorMessage(result: TaskResult) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\n\nexport function errorDetectionHandler(\n overwrite = false,\n isError = isTaskError,\n errorMessage: (result: TaskResult) => Buffer | Error = getErrorMessage\n) {\n return (error: Buffer | Error | undefined, result: TaskResult) => {\n if ((!overwrite && error) || !isError(result)) {\n return error;\n }\n\n return errorMessage(result);\n };\n}\n\nexport function errorDetectionPlugin(\n config: SimpleGitPluginConfig['errors']\n): SimpleGitPlugin<'task.error'> {\n return {\n type: 'task.error',\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode,\n });\n\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(undefined, error.toString('utf-8')) };\n }\n\n return {\n error,\n };\n },\n };\n}\n","import { EventEmitter } from 'node:events';\n\nimport type {\n SimpleGitPlugin,\n SimpleGitPluginType,\n SimpleGitPluginTypes,\n} from './simple-git-plugin';\nimport { append, asArray } from '../utils';\nimport type { SimpleGitPluginConfig } from '../types';\n\nexport class PluginStore {\n private plugins: Set<SimpleGitPlugin<SimpleGitPluginType>> = new Set();\n private events = new EventEmitter();\n\n on<K extends keyof SimpleGitPluginConfig>(\n type: K,\n listener: (data: SimpleGitPluginConfig[K]) => void\n ) {\n this.events.on(type, listener);\n }\n\n reconfigure<K extends keyof SimpleGitPluginConfig>(type: K, data: SimpleGitPluginConfig[K]) {\n this.events.emit(type, data);\n }\n\n public append<T extends SimpleGitPluginType>(type: T, action: SimpleGitPlugin<T>['action']) {\n const plugin = append(this.plugins, { type, action });\n\n return () => this.plugins.delete(plugin);\n }\n\n public add<T extends SimpleGitPluginType>(\n plugin: void | SimpleGitPlugin<T> | SimpleGitPlugin<T>[]\n ) {\n const plugins: SimpleGitPlugin<T>[] = [];\n\n asArray(plugin).forEach((plugin) => plugin && this.plugins.add(append(plugins, plugin)));\n\n return () => {\n plugins.forEach((plugin) => this.plugins.delete(plugin));\n };\n }\n\n public exec<T extends SimpleGitPluginType>(\n type: T,\n data: SimpleGitPluginTypes[T]['data'],\n context: SimpleGitPluginTypes[T]['context']\n ): typeof data {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n\n return output;\n }\n}\n","import { SimpleGitOptions } from '../types';\nimport { asNumber, including } from '../utils';\n\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function progressMonitorPlugin(progress: Exclude<SimpleGitOptions['progress'], void>) {\n const progressCommand = '--progress';\n const progressMethods = ['checkout', 'clone', 'fetch', 'pull', 'push'];\n\n const onProgress: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n\n context.spawned.stderr?.on('data', (chunk: Buffer) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString('utf8'));\n if (!message) {\n return;\n }\n\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4]),\n });\n });\n },\n };\n\n const onArgs: SimpleGitPlugin<'spawn.args'> = {\n type: 'spawn.args',\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n\n return including(args, progressCommand);\n },\n };\n\n return [onArgs, onProgress];\n}\n\nfunction progressEventStage(input: string) {\n return String(input.toLowerCase().split(' ', 1)) || 'unknown';\n}\n","import { SpawnOptions } from 'child_process';\nimport { pick } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function spawnOptionsPlugin(\n spawnOptions: Partial<SpawnOptions>\n): SimpleGitPlugin<'spawn.options'> {\n const options = pick(spawnOptions, ['uid', 'gid']);\n\n return {\n type: 'spawn.options',\n action(data) {\n return { ...options, ...data };\n },\n };\n}\n","import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport type { SimpleGitOptions } from '../types';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true,\n}: Exclude<SimpleGitOptions['timeout'], undefined>): SimpleGitPlugin<'spawn.after'> | void {\n if (block > 0) {\n return {\n type: 'spawn.after',\n action(_data, context) {\n let timeout: NodeJS.Timeout;\n\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n\n function stop() {\n context.spawned.stdout?.off('data', wait);\n context.spawned.stderr?.off('data', wait);\n context.spawned.off('exit', stop);\n context.spawned.off('close', stop);\n timeout && clearTimeout(timeout);\n }\n\n function kill() {\n stop();\n context.kill(new GitPluginError(undefined, 'timeout', `block timeout reached`));\n }\n\n stdOut && context.spawned.stdout?.on('data', wait);\n stdErr && context.spawned.stderr?.on('data', wait);\n context.spawned.on('exit', stop);\n context.spawned.on('close', stop);\n\n wait();\n },\n };\n }\n}\n","import { SimpleGitPlugin } from './simple-git-plugin';\nimport { isPathSpec, toPaths } from '../args/pathspec';\n\nexport function suffixPathsPlugin(): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(data) {\n const prefix: string[] = [];\n let suffix: undefined | string[];\n function append(args: string[]) {\n (suffix = suffix || []).push(...args);\n }\n\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n\n if (isPathSpec(param)) {\n append(toPaths(param));\n continue;\n }\n\n if (param === '--') {\n append(\n data.slice(i + 1).flatMap((item) => (isPathSpec(item) && toPaths(item)) || item)\n );\n break;\n }\n\n prefix.push(param);\n }\n\n return !suffix ? prefix : [...prefix, '--', ...suffix.map(String)];\n },\n };\n}\n","import { SimpleGitFactory } from '../../typings';\n\nimport * as api from './api';\nimport {\n abortPlugin,\n blockUnsafeOperationsPlugin,\n commandConfigPrefixingPlugin,\n completionDetectionPlugin,\n customBinaryPlugin,\n errorDetectionHandler,\n errorDetectionPlugin,\n PluginStore,\n progressMonitorPlugin,\n spawnOptionsPlugin,\n timeoutPlugin,\n} from './plugins';\nimport { suffixPathsPlugin } from './plugins/suffix-paths.plugin';\nimport { createInstanceConfig, folderExists } from './utils';\nimport { SimpleGitOptions } from './types';\n\nconst Git = require('../git');\n\n/**\n * Adds the necessary properties to the supplied object to enable it for use as\n * the default export of a module.\n *\n * Eg: `module.exports = esModuleFactory({ something () {} })`\n */\nexport function esModuleFactory<T>(defaultExport: T) {\n return Object.defineProperties(defaultExport, {\n __esModule: { value: true },\n default: { value: defaultExport },\n }) as T & { __esModule: true; default: T };\n}\n\nexport function gitExportFactory(factory: SimpleGitFactory) {\n return Object.assign(factory.bind(null), api);\n}\n\nexport function gitInstanceFactory(\n baseDir?: string | Partial<SimpleGitOptions>,\n options?: Partial<SimpleGitOptions>\n) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n (baseDir && (typeof baseDir === 'string' ? { baseDir } : baseDir)) || {},\n options\n );\n\n if (!folderExists(config.baseDir)) {\n throw new api.GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n\n return new Git(config, plugins);\n}\n","import { SimpleGit, SimpleGitOptions } from '../../../typings';\n\nimport { GitResponseError } from '../errors/git-response-error';\nimport { gitInstanceFactory } from '../git-factory';\nimport { SimpleGitTaskCallback } from '../types';\n\nconst functionNamesBuilderApi = ['customBinary', 'env', 'outputHandler', 'silent'];\n\nconst functionNamesPromiseApi = [\n 'add',\n 'addAnnotatedTag',\n 'addConfig',\n 'addRemote',\n 'addTag',\n 'applyPatch',\n 'binaryCatFile',\n 'branch',\n 'branchLocal',\n 'catFile',\n 'checkIgnore',\n 'checkIsRepo',\n 'checkout',\n 'checkoutBranch',\n 'checkoutLatestTag',\n 'checkoutLocalBranch',\n 'clean',\n 'clone',\n 'commit',\n 'cwd',\n 'deleteLocalBranch',\n 'deleteLocalBranches',\n 'diff',\n 'diffSummary',\n 'exec',\n 'fetch',\n 'getRemotes',\n 'init',\n 'listConfig',\n 'listRemote',\n 'log',\n 'merge',\n 'mergeFromTo',\n 'mirror',\n 'mv',\n 'pull',\n 'push',\n 'pushTags',\n 'raw',\n 'rebase',\n 'remote',\n 'removeRemote',\n 'reset',\n 'revert',\n 'revparse',\n 'rm',\n 'rmKeepLocal',\n 'show',\n 'stash',\n 'stashList',\n 'status',\n 'subModule',\n 'submoduleAdd',\n 'submoduleInit',\n 'submoduleUpdate',\n 'tag',\n 'tags',\n 'updateServerInfo',\n];\n\nexport function gitP(\n ...args: [] | [string] | [Partial<SimpleGitOptions>] | [string, Partial<SimpleGitOptions>]\n): SimpleGit {\n let git: any;\n\n let chain = Promise.resolve();\n\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n\n function builderReturn() {\n return promiseApi;\n }\n\n function chainReturn() {\n return chain;\n }\n\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api: any, name: string) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative,\n });\n\n return api;\n },\n {}\n );\n\n return promiseApi as SimpleGit;\n\n function asyncWrapper(fn: string, git: any): (...args: any[]) => Promise<any> {\n return function (...args: any[]) {\n if (typeof args[args.length] === 'function') {\n throw new TypeError(\n 'Promise interface requires that handlers are not supplied inline, ' +\n 'trailing function not allowed in call to ' +\n fn\n );\n }\n\n return chain.then(function () {\n return new Promise(function (resolve, reject) {\n const callback: SimpleGitTaskCallback = (err: Error | null, result?: any) => {\n if (err) {\n return reject(toError(err));\n }\n\n resolve(result);\n };\n args.push(callback);\n\n git[fn].apply(git, args);\n });\n });\n };\n }\n\n function syncWrapper(fn: string, git: any, api: SimpleGit) {\n return (...args: any[]) => {\n git[fn](...args);\n\n return api;\n };\n }\n}\n\nfunction toError(error: Error | string | any): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === 'string') {\n return new Error(error);\n }\n\n return new GitResponseError(error);\n}\n","import { gitInstanceFactory } from './lib/git-factory';\n\nexport { gitP } from './lib/runners/promise-wrapped';\nexport * from './lib/api';\n\nexport const simpleGit = gitInstanceFactory;\n\nexport default gitInstanceFactory;\n","export function getErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\nimport simpleGit from 'simple-git';\nimport { getConfig } from '@/app/actions/config';\nimport { getAllCredentials, getCredentialById, getCredentialToken } from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n buildTtydTerminalSrc,\n detectGitRemoteProvider,\n getTmuxSessionName,\n parseGitRemoteHost,\n TerminalSessionEnvironment,\n TerminalSessionRole,\n} from '@/lib/terminal-session';\n\nexport type FileSystemItem = {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n};\n\nexport type GitBranch = {\n name: string;\n current: boolean;\n};\n\nexport type SupportedAgentCli = 'gemini' | 'codex' | 'agent';\n\ntype AgentCliConfig = {\n executable: string;\n installCommand: string;\n};\n\nconst AGENT_CLI_CONFIG: Record<SupportedAgentCli, AgentCliConfig> = {\n gemini: {\n executable: 'gemini',\n installCommand: 'npm install -g google/gemini-cli',\n },\n codex: {\n executable: 'codex',\n installCommand: 'npm i -g openai/codex',\n },\n agent: {\n executable: 'agent',\n installCommand: 'curl https://cursor.com/install -fsS | bash',\n },\n};\n\nfunction normalizeAgentCli(agentCli: string): SupportedAgentCli | null {\n if (agentCli === 'gemini' || agentCli === 'codex' || agentCli === 'agent') {\n return agentCli;\n }\n return null;\n}\n\nexport async function getHomeDirectory() {\n return os.homedir();\n}\n\nexport async function listPathEntries(dirPath: string): Promise<FileSystemItem[]> {\n try {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n\n const sortedEntries = entries.sort((a, b) => {\n if (a.isDirectory() && !b.isDirectory()) return -1;\n if (!a.isDirectory() && b.isDirectory()) return 1;\n return a.name.localeCompare(b.name);\n });\n\n const items = await Promise.all(\n sortedEntries.map(async (entry) => {\n if (!entry.isDirectory() && !entry.isFile()) return null;\n\n const fullPath = path.join(dirPath, entry.name);\n let isGitRepo = false;\n\n if (entry.isDirectory()) {\n try {\n const gitDir = path.join(fullPath, '.git');\n await fs.access(gitDir);\n isGitRepo = true;\n } catch {\n isGitRepo = false;\n }\n }\n\n return {\n name: entry.name,\n path: fullPath,\n isDirectory: entry.isDirectory(),\n isGitRepo,\n } as FileSystemItem;\n })\n );\n\n return items.filter((item): item is FileSystemItem => item !== null);\n } catch (error) {\n console.error('Error listing directory entries:', error);\n return [];\n }\n}\n\nexport async function listDirectories(dirPath: string): Promise<FileSystemItem[]> {\n const items = await listPathEntries(dirPath);\n return items.filter((item) => item.isDirectory);\n}\n\nexport async function checkDirectoryAccessible(dirPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(dirPath);\n if (!stats.isDirectory()) return false;\n await fs.readdir(dirPath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function getBranches(repoPath: string): Promise<GitBranch[]> {\n try {\n const git = simpleGit(repoPath);\n const branchSummary = await git.branchLocal();\n\n return branchSummary.all.map(name => ({\n name,\n current: branchSummary.current === name,\n }));\n } catch (error) {\n console.error('Error fetching branches:', error);\n throw new Error('Failed to fetch branches. Make sure the path is a valid git repository.');\n }\n}\n\nexport async function checkoutBranch(repoPath: string, branchName: string): Promise<void> {\n try {\n const git = simpleGit(repoPath);\n await git.checkout(branchName);\n } catch (error) {\n console.error('Error checking out branch:', error);\n throw new Error(`Failed to checkout branch ${branchName}`);\n }\n}\n\nexport async function checkIsGitRepo(dirPath: string): Promise<boolean> {\n try {\n const gitDir = path.join(dirPath, '.git');\n await fs.access(gitDir);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function checkAgentCliInstalled(\n agentCli: string\n): Promise<{ success: boolean; installed: boolean; error?: string }> {\n const normalizedCli = normalizeAgentCli(agentCli);\n if (!normalizedCli) {\n return { success: false, installed: false, error: `Unsupported coding agent CLI: ${agentCli}` };\n }\n\n try {\n const { spawn } = await import('child_process');\n const cliConfig = AGENT_CLI_CONFIG[normalizedCli];\n const isWindows = os.platform() === 'win32';\n const shell = isWindows ? 'powershell' : 'bash';\n const shellArgs = isWindows\n ? ['-Command', `Get-Command ${cliConfig.executable} -ErrorAction SilentlyContinue`]\n : ['-lc', `command -v ${cliConfig.executable}`];\n\n const exitCode = await new Promise<number>((resolve) => {\n const child = spawn(shell, shellArgs, { stdio: 'ignore' });\n child.on('close', (code) => resolve(code ?? 1));\n child.on('error', () => resolve(1));\n });\n\n return { success: true, installed: exitCode === 0 };\n } catch (error) {\n console.error('Failed to detect coding agent CLI:', error);\n return { success: false, installed: false, error: 'Failed to detect coding agent CLI installation status.' };\n }\n}\n\nexport async function installAgentCli(agentCli: string): Promise<{ success: boolean; error?: string }> {\n const normalizedCli = normalizeAgentCli(agentCli);\n if (!normalizedCli) {\n return { success: false, error: `Unsupported coding agent CLI: ${agentCli}` };\n }\n\n try {\n const { spawn } = await import('child_process');\n const cliConfig = AGENT_CLI_CONFIG[normalizedCli];\n const isWindows = os.platform() === 'win32';\n const shell = isWindows ? 'powershell' : 'bash';\n const shellArgs = isWindows\n ? ['-Command', cliConfig.installCommand]\n : ['-lc', cliConfig.installCommand];\n\n const outputChunks: string[] = [];\n const exitCode = await new Promise<number>((resolve) => {\n const child = spawn(shell, shellArgs, {\n cwd: os.homedir(),\n env: process.env,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n child.stdout.on('data', (chunk: Buffer) => {\n outputChunks.push(chunk.toString());\n });\n\n child.stderr.on('data', (chunk: Buffer) => {\n outputChunks.push(chunk.toString());\n });\n\n child.on('close', (code) => resolve(code ?? 1));\n child.on('error', () => resolve(1));\n });\n\n if (exitCode === 0) {\n return { success: true };\n }\n\n const detail = outputChunks.join('').trim();\n return {\n success: false,\n error: detail || `Failed to install ${normalizedCli} CLI.`,\n };\n } catch (error) {\n console.error('Failed to install coding agent CLI:', error);\n return { success: false, error: 'Failed to install coding agent CLI.' };\n }\n}\n\n// Global variable to track the ttyd process\ndeclare global {\n var ttydProcess: ReturnType<typeof import('child_process').spawn> | undefined;\n var ttydPersistenceMode: 'tmux' | 'shell' | undefined;\n}\n\ntype TerminalSessionSources = {\n agentTerminalSrc: string;\n floatingTerminalSrc: string;\n};\n\nfunction toTerminalSessionEnvironment(\n credential: Credential,\n token: string,\n): TerminalSessionEnvironment {\n return credential.type === 'github'\n ? { name: 'GITHUB_TOKEN', value: token }\n : { name: 'GITLAB_TOKEN', value: token };\n}\n\nfunction getGitLabCredentialHost(credential: Credential): string | null {\n if (credential.type !== 'gitlab') return null;\n\n try {\n return new URL(credential.serverUrl).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nfunction pickCandidateCredential(\n credentials: Credential[],\n provider: 'github' | 'gitlab',\n remoteHost: string | null,\n): Credential | null {\n if (provider === 'github') {\n return credentials.find((credential) => credential.type === 'github') || null;\n }\n\n if (remoteHost) {\n const hostMatch = credentials.find((credential) => (\n credential.type === 'gitlab'\n && getGitLabCredentialHost(credential) === remoteHost\n ));\n if (hostMatch) return hostMatch;\n }\n\n return credentials.find((credential) => credential.type === 'gitlab') || null;\n}\n\nasync function getPrimaryRemoteUrl(repoPath: string): Promise<string | null> {\n const git = simpleGit(repoPath);\n\n try {\n const originUrl = (await git.raw(['remote', 'get-url', 'origin'])).trim();\n if (originUrl) return originUrl;\n } catch {\n // Fallback to first available remote below.\n }\n\n try {\n const remotes = await git.getRemotes(true);\n for (const remote of remotes) {\n const fetchUrl = remote.refs?.fetch?.trim();\n if (fetchUrl) return fetchUrl;\n\n const pushUrl = remote.refs?.push?.trim();\n if (pushUrl) return pushUrl;\n }\n } catch {\n // Ignore and fallback to null.\n }\n\n return null;\n}\n\nasync function resolveTerminalSessionEnvironment(repoPath: string): Promise<TerminalSessionEnvironment | null> {\n const config = await getConfig();\n const repoSettings = config.repoSettings?.[repoPath];\n\n if (repoSettings?.credentialId) {\n const selectedCredential = await getCredentialById(repoSettings.credentialId);\n if (selectedCredential) {\n const token = await getCredentialToken(selectedCredential.id);\n if (token) {\n return toTerminalSessionEnvironment(selectedCredential, token);\n }\n }\n }\n\n const remoteUrl = await getPrimaryRemoteUrl(repoPath);\n if (!remoteUrl) return null;\n\n const allCredentials = await getAllCredentials();\n const provider = detectGitRemoteProvider(remoteUrl, {\n gitlabHosts: allCredentials.flatMap((credential) => {\n if (credential.type !== 'gitlab') return [];\n const host = getGitLabCredentialHost(credential);\n return host ? [host] : [];\n }),\n });\n if (!provider) return null;\n\n const remoteHost = parseGitRemoteHost(remoteUrl);\n\n const credential = pickCandidateCredential(allCredentials, provider, remoteHost);\n\n if (!credential) return null;\n\n const token = await getCredentialToken(credential.id);\n if (!token) return null;\n\n return toTerminalSessionEnvironment(credential, token);\n}\n\nexport async function getSessionTerminalSources(\n sessionName: string,\n repoPath: string,\n): Promise<TerminalSessionSources> {\n const fallback: TerminalSessionSources = {\n agentTerminalSrc: buildTtydTerminalSrc(sessionName, 'agent'),\n floatingTerminalSrc: buildTtydTerminalSrc(sessionName, 'terminal'),\n };\n\n if (os.platform() === 'win32') {\n return fallback;\n }\n\n try {\n const environment = await resolveTerminalSessionEnvironment(repoPath);\n return {\n agentTerminalSrc: buildTtydTerminalSrc(sessionName, 'agent', environment),\n floatingTerminalSrc: buildTtydTerminalSrc(sessionName, 'terminal', environment),\n };\n } catch (error) {\n console.error('Failed to resolve terminal session environment:', error);\n return fallback;\n }\n}\n\nexport async function startTtydProcess(): Promise<{ success: boolean; persistenceMode?: 'tmux' | 'shell'; error?: string }> {\n if (global.ttydProcess) {\n if (global.ttydPersistenceMode === 'tmux' && os.platform() !== 'win32') {\n try {\n const { spawnSync } = await import('child_process');\n // Re-apply tmux defaults for already-running instances so wheel scrollback stays available.\n spawnSync('tmux', ['set-option', '-g', 'mouse', 'on'], {\n stdio: 'ignore',\n env: process.env,\n });\n } catch (error) {\n console.error('Failed to apply tmux mouse option:', error);\n }\n }\n return { success: true, persistenceMode: global.ttydPersistenceMode || 'shell' };\n }\n\n try {\n const { spawn, spawnSync } = await import('child_process');\n\n const env: NodeJS.ProcessEnv = { ...process.env };\n // Clean up environment variables to prevent conflicts\n // Specifically remove TURBOPACK which causes \"Multiple bundler flags set\" error\n // when running next dev inside the terminal if the parent process has it set.\n delete (env as any).TURBOPACK;\n delete (env as any).PORT;\n delete (env as any).NODE_ENV;\n\n const workingDir = os.homedir();\n const isWindows = os.platform() === 'win32';\n const commandProbe = isWindows ? 'where' : 'which';\n const hasTmux =\n !isWindows &&\n spawnSync(commandProbe, ['tmux'], {\n stdio: 'ignore',\n env: process.env,\n }).status === 0;\n\n const ttydArgs = [\n '-p', '7681',\n '-t', 'theme={\"background\": \"white\", \"foreground\": \"black\", \"cursor\": \"black\", \"selectionBackground\": \"rgba(59, 130, 246, 0.4)\"}',\n '-t', 'disableResizeOverlay=true',\n '-t', 'fontSize=12',\n '-t', 'fontWeight=300',\n '-t', 'fontWeightBold=500',\n '-w', workingDir,\n '-W',\n ];\n\n let persistenceMode: 'tmux' | 'shell' = 'shell';\n if (hasTmux) {\n // Keep deep history and wheel scrollback in tmux-backed ttyd sessions.\n spawnSync('tmux', ['start-server'], {\n stdio: 'ignore',\n env: process.env,\n });\n spawnSync('tmux', ['set-option', '-g', 'mouse', 'on'], {\n stdio: 'ignore',\n env: process.env,\n });\n spawnSync('tmux', ['set-option', '-g', 'history-limit', '200000'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Use URL args so each iframe can attach to a dedicated tmux session.\n ttydArgs.push('-a', 'tmux');\n persistenceMode = 'tmux';\n } else {\n const shell = isWindows ? 'powershell' : 'bash';\n console.warn('tmux is unavailable; falling back to non-persistent ttyd shell mode.');\n ttydArgs.push(shell);\n }\n\n const child = spawn('ttyd', ttydArgs, {\n stdio: 'ignore',\n detached: false,\n cwd: workingDir,\n env: {\n ...env,\n TERM: 'xterm-256color',\n COLORTERM: 'truecolor',\n },\n });\n\n child.on('error', (err) => {\n console.error('Failed to start ttyd:', err);\n global.ttydProcess = undefined;\n global.ttydPersistenceMode = undefined;\n });\n\n child.on('exit', () => {\n global.ttydProcess = undefined;\n global.ttydPersistenceMode = undefined;\n });\n\n global.ttydProcess = child;\n global.ttydPersistenceMode = persistenceMode;\n\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n return { success: true, persistenceMode };\n } catch (error) {\n console.error('Error starting ttyd:', error);\n return { success: false, error: 'Failed to start ttyd. Make sure ttyd is installed and in your PATH.' };\n }\n}\n\nexport async function setTmuxSessionMouseMode(\n sessionName: string,\n role: TerminalSessionRole,\n enabled: boolean\n): Promise<{ success: boolean; error?: string }> {\n if (os.platform() === 'win32') {\n return { success: true };\n }\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const hasSessionResult = spawnSync('tmux', ['has-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Session might not be created yet (e.g. hidden terminal iframe not initialized).\n // Treat this as a no-op so toggling mode remains robust.\n if (typeof hasSessionResult.status === 'number' && hasSessionResult.status !== 0) {\n return { success: true };\n }\n\n const result = spawnSync('tmux', ['set-option', '-t', tmuxSession, 'mouse', enabled ? 'on' : 'off'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n if (typeof result.status === 'number' && result.status !== 0) {\n return { success: false, error: `tmux exited with status ${result.status}` };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to set tmux mouse mode:', error);\n return { success: false, error: 'Failed to set tmux mouse mode.' };\n }\n}\n\nexport async function setTmuxSessionStatusVisibility(\n sessionName: string,\n role: TerminalSessionRole,\n visible: boolean\n): Promise<{ success: boolean; applied: boolean; error?: string }> {\n if (os.platform() === 'win32') {\n return { success: true, applied: false };\n }\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const hasSessionResult = spawnSync('tmux', ['has-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Session might not be created yet (e.g. hidden terminal iframe not initialized).\n // Treat this as a no-op so callers can retry later.\n if (typeof hasSessionResult.status === 'number' && hasSessionResult.status !== 0) {\n return { success: true, applied: false };\n }\n\n const result = spawnSync('tmux', ['set-option', '-t', tmuxSession, 'status', visible ? 'on' : 'off'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n if (typeof result.status === 'number' && result.status !== 0) {\n return { success: false, applied: false, error: `tmux exited with status ${result.status}` };\n }\n\n return { success: true, applied: true };\n } catch (error) {\n console.error('Failed to set tmux session status visibility:', error);\n return { success: false, applied: false, error: 'Failed to set tmux session status visibility.' };\n }\n}\n\nexport async function terminateSessionTerminalSessions(sessionName: string): Promise<void> {\n if (os.platform() === 'win32') return;\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxExists =\n spawnSync('which', ['tmux'], {\n stdio: 'ignore',\n env: process.env,\n }).status === 0;\n\n if (!tmuxExists) return;\n\n const roles: TerminalSessionRole[] = ['agent', 'terminal'];\n for (const role of roles) {\n const tmuxSession = getTmuxSessionName(sessionName, role);\n spawnSync('tmux', ['kill-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n }\n } catch (error) {\n console.error('Failed to terminate session terminal sessions:', error);\n }\n}\n\nexport async function prepareSessionWorktree(\n repoPath: string,\n baseBranch: string\n): Promise<{ success: boolean; sessionName?: string; worktreePath?: string; branchName?: string; error?: string }> {\n try {\n const { v4: uuidv4 } = await import('uuid');\n const shortUuid = uuidv4().split('-')[0];\n\n const date = new Date();\n const timestamp = date.toISOString().replace(/[-:]/g, '').slice(0, 8) + '-' + date.getHours().toString().padStart(2, '0') + date.getMinutes().toString().padStart(2, '0');\n const sessionName = `${timestamp}-${shortUuid}`;\n\n const branchName = `viba/${sessionName}`;\n\n const repoName = path.basename(repoPath);\n const parentDir = path.dirname(repoPath);\n\n const vibaDir = path.join(parentDir, '.viba', repoName);\n const worktreePath = path.join(vibaDir, sessionName);\n\n await fs.mkdir(vibaDir, { recursive: true });\n\n const git = simpleGit(repoPath);\n\n await git.raw(['worktree', 'add', '-b', branchName, worktreePath, baseBranch]);\n\n return {\n success: true,\n sessionName,\n worktreePath,\n branchName\n };\n } catch (e: any) {\n console.error(\"Failed to create worktree:\", e);\n return { success: false, error: e.message || String(e) };\n }\n}\n\nexport async function removeWorktree(repoPath: string, worktreePath: string, branchName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const git = simpleGit(repoPath);\n\n try {\n await git.raw(['worktree', 'remove', '--force', worktreePath]);\n } catch (e: any) {\n const errorMsg = e.message || String(e);\n if (errorMsg.includes('is not a working tree') || errorMsg.includes('not a valid path')) {\n console.warn(`Path ${worktreePath} is not a valid working tree according to git, continuing cleanup...`);\n } else {\n console.error(`Git worktree remove failed, but continuing with cleanup: ${errorMsg}`);\n }\n\n // Try to prune in case of stale worktree metadata\n try {\n await git.raw(['worktree', 'prune']);\n } catch {\n // ignore prune errors\n }\n }\n\n try {\n await git.deleteLocalBranch(branchName, true);\n } catch (e: any) {\n console.warn(`Failed to delete branch ${branchName}: ${e.message || e}`);\n }\n\n try {\n await fs.rm(worktreePath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n\n try {\n const attachmentsDir = `${worktreePath}-attachments`;\n await fs.rm(attachmentsDir, { recursive: true, force: true });\n } catch {\n // ignore\n }\n\n return { success: true };\n } catch (e: any) {\n console.error(\"Failed to cleanup worktree (critical error):\", e);\n // Even on critical error, return success: true if we want the session to be considered \"deleted\"\n // so the metadata can be removed.\n return { success: true };\n }\n}\n\nexport async function getStartupScript(repoPath: string): Promise<string> {\n try {\n const files = await fs.readdir(repoPath);\n if (files.includes('package-lock.json')) return 'npm install';\n if (files.includes('pnpm-lock.yaml')) return 'pnpm install';\n if (files.includes('yarn.lock')) return 'yarn install';\n return '';\n } catch (error) {\n console.error('Error determining startup script:', error);\n return '';\n }\n}\n\nexport async function getDefaultDevServerScript(repoPath: string): Promise<string> {\n try {\n const packageJsonPath = path.join(repoPath, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as { scripts?: Record<string, unknown> };\n const scripts = packageJson.scripts;\n\n if (!scripts || typeof scripts !== 'object') return '';\n if (typeof scripts.dev === 'string' && scripts.dev.trim()) return 'npm run dev';\n if (typeof scripts.watch === 'string' && scripts.watch.trim()) return 'npm run watch';\n if (typeof scripts.start === 'string' && scripts.start.trim()) return 'npm run start';\n\n return '';\n } catch (error: unknown) {\n const errorCode =\n typeof error === 'object' && error !== null && 'code' in error\n ? (error as { code?: string }).code\n : undefined;\n\n if (errorCode !== 'ENOENT') {\n console.error('Error determining default dev server script:', error);\n }\n return '';\n }\n}\n\nexport async function listRepoFiles(repoPath: string, query: string = ''): Promise<string[]> {\n try {\n const git = simpleGit(repoPath);\n const result = await git.raw(['ls-files']);\n const allFiles = result.split('\\n').filter(Boolean);\n\n if (!query) return allFiles.slice(0, 50);\n\n const lowerQuery = query.toLowerCase();\n return allFiles.filter(f => f.toLowerCase().includes(lowerQuery)).slice(0, 50);\n } catch (error) {\n console.error('Failed to list repo files:', error);\n return [];\n }\n}\n\nexport async function saveAttachments(worktreePath: string, formData: FormData): Promise<string[]> {\n try {\n const attachmentsDir = `${worktreePath}-attachments`;\n await fs.mkdir(attachmentsDir, { recursive: true });\n\n const files = Array.from(formData.entries());\n\n const savePromises = files.map(async ([, entry]) => {\n if (entry instanceof File) {\n const buffer = Buffer.from(await entry.arrayBuffer());\n const safeName = entry.name.replace(/[^a-zA-Z0-9._-]/g, '_');\n const fullPath = path.join(attachmentsDir, safeName);\n await fs.writeFile(fullPath, buffer);\n return safeName;\n }\n return null;\n });\n\n const results = await Promise.all(savePromises);\n return results.filter((name): name is string => name !== null);\n } catch (error) {\n console.error('Failed to save attachments:', error);\n return [];\n }\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\n\nexport interface RepoSettings {\n agentProvider?: string;\n agentModel?: string;\n startupScript?: string;\n devServerScript?: string;\n lastBranch?: string;\n credentialId?: string | null;\n credentialPreference?: 'auto' | 'github' | 'gitlab';\n}\n\nexport interface Config {\n recentRepos: string[];\n defaultRoot: string;\n selectedIde: string;\n agentWidth: number;\n repoSettings: Record<string, RepoSettings>;\n pinnedFolderShortcuts: string[];\n}\n\nconst DEFAULT_CONFIG: Config = {\n recentRepos: [],\n defaultRoot: '',\n selectedIde: 'vscode',\n agentWidth: 66.666,\n repoSettings: {},\n pinnedFolderShortcuts: [],\n};\n\nasync function getConfigPath(): Promise<string> {\n const homedir = os.homedir();\n const vibaDir = path.join(homedir, '.viba');\n try {\n await fs.mkdir(vibaDir, { recursive: true });\n } catch (error) {\n // Ignore if exists\n }\n return path.join(vibaDir, 'config.json');\n}\n\nexport async function getConfig(): Promise<Config> {\n try {\n const configPath = await getConfigPath();\n const content = await fs.readFile(configPath, 'utf-8');\n const config = JSON.parse(content);\n return { ...DEFAULT_CONFIG, ...config };\n } catch (error) {\n // Return default if file doesn't exist or is invalid\n return DEFAULT_CONFIG;\n }\n}\n\nexport async function saveConfig(config: Config): Promise<void> {\n try {\n const configPath = await getConfigPath();\n await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');\n } catch (error) {\n console.error('Failed to save config:', error);\n throw new Error('Failed to save configuration.');\n }\n}\n\nexport async function updateConfig(updates: Partial<Config>): Promise<Config> {\n const currentConfig = await getConfig();\n const newConfig = { ...currentConfig, ...updates };\n await saveConfig(newConfig);\n return newConfig;\n}\n\nexport async function updateRepoSettings(repoPath: string, updates: Partial<RepoSettings>): Promise<Config> {\n const currentConfig = await getConfig();\n const currentRepoSettings = currentConfig.repoSettings[repoPath] || {};\n\n const newConfig: Config = {\n ...currentConfig,\n repoSettings: {\n ...currentConfig.repoSettings,\n [repoPath]: { ...currentRepoSettings, ...updates },\n },\n };\n\n await saveConfig(newConfig);\n return newConfig;\n}\n","export type TerminalSessionRole = 'agent' | 'terminal';\nexport type GitRemoteProvider = 'github' | 'gitlab';\nexport type TerminalSessionEnvironment = {\n name: 'GITHUB_TOKEN' | 'GITLAB_TOKEN';\n value: string;\n};\ntype DetectGitRemoteProviderOptions = {\n gitlabHosts?: string[];\n};\n\nfunction sanitizeTmuxSessionName(value: string): string {\n const safe = value.trim().replace(/[^a-zA-Z0-9_-]/g, '-');\n return safe || 'session';\n}\n\nexport function getTmuxSessionName(sessionName: string, role: TerminalSessionRole): string {\n return `viba-${sanitizeTmuxSessionName(sessionName).slice(0, 40)}-${role}`;\n}\n\nfunction normalizeGitRemoteUrl(remoteUrl: string): string {\n const trimmed = remoteUrl.trim();\n if (!trimmed) return '';\n\n if (/^[a-z][a-z0-9+.-]*:\\/\\//i.test(trimmed)) {\n return trimmed;\n }\n\n const scpLikeMatch = trimmed.match(/^([^@]+@)?([^:]+):(.+)$/);\n if (!scpLikeMatch) {\n return '';\n }\n\n const userPart = scpLikeMatch[1] || '';\n const host = scpLikeMatch[2];\n const path = scpLikeMatch[3].replace(/^\\/+/, '');\n return `ssh://${userPart}${host}/${path}`;\n}\n\nexport function parseGitRemoteHost(remoteUrl: string): string | null {\n const normalized = normalizeGitRemoteUrl(remoteUrl);\n if (!normalized) return null;\n\n try {\n return new URL(normalized).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nfunction normalizeKnownHost(value: string): string | null {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n try {\n return new URL(trimmed).hostname.toLowerCase();\n } catch {\n // Fall through to parse as a bare host (optionally with port).\n }\n\n try {\n return new URL(`ssh://${trimmed}`).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nexport function detectGitRemoteProvider(\n remoteUrl: string,\n options?: DetectGitRemoteProviderOptions,\n): GitRemoteProvider | null {\n const host = parseGitRemoteHost(remoteUrl);\n if (!host) return null;\n\n if (host === 'github.com' || host.includes('github')) {\n return 'github';\n }\n\n if (host === 'gitlab.com' || host.includes('gitlab')) {\n return 'gitlab';\n }\n\n if (options?.gitlabHosts?.some((knownHost) => normalizeKnownHost(knownHost) === host)) {\n return 'gitlab';\n }\n\n return null;\n}\n\nexport function buildTtydTerminalSrc(\n sessionName: string,\n role: TerminalSessionRole,\n environment?: TerminalSessionEnvironment | null,\n): string {\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const params = new URLSearchParams();\n params.append('arg', 'new-session');\n if (environment?.value) {\n params.append('arg', '-e');\n params.append('arg', `${environment.name}=${environment.value}`);\n }\n params.append('arg', '-A');\n params.append('arg', '-s');\n params.append('arg', tmuxSession);\n return `/terminal?${params.toString()}`;\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\nimport simpleGit from 'simple-git';\nimport { getErrorMessage } from '../../lib/error-utils';\nimport { prepareSessionWorktree, removeWorktree, terminateSessionTerminalSessions } from './git';\n\nexport type SessionMetadata = {\n sessionName: string;\n repoPath: string;\n worktreePath: string;\n branchName: string;\n baseBranch?: string;\n agent: string;\n model: string;\n title?: string;\n devServerScript?: string;\n initialized?: boolean;\n timestamp: string;\n};\n\nexport type SessionLaunchContext = {\n sessionName: string;\n title?: string;\n initialMessage?: string;\n rawInitialMessage?: string;\n startupScript?: string;\n attachmentNames?: string[];\n agentProvider?: string;\n model?: string;\n sessionMode?: 'fast' | 'plan';\n isResume?: boolean;\n timestamp: string;\n};\n\nexport type SessionPrefillContext = {\n sourceSessionName: string;\n repoPath: string;\n title?: string;\n initialMessage?: string;\n attachmentNames: string[];\n agentProvider: string;\n model: string;\n};\n\nasync function getSessionsDir(): Promise<string> {\n const homedir = os.homedir();\n const sessionsDir = path.join(homedir, '.viba', 'sessions');\n try {\n await fs.mkdir(sessionsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return sessionsDir;\n}\n\nasync function getSessionContextsDir(): Promise<string> {\n const homedir = os.homedir();\n const contextsDir = path.join(homedir, '.viba', 'session-contexts');\n try {\n await fs.mkdir(contextsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return contextsDir;\n}\n\nasync function getSessionContextFilePath(sessionName: string): Promise<string> {\n const contextsDir = await getSessionContextsDir();\n return path.join(contextsDir, `${sessionName}.json`);\n}\n\nasync function getSessionPromptsDir(): Promise<string> {\n const homedir = os.homedir();\n const promptsDir = path.join(homedir, '.viba', 'session-prompts');\n try {\n await fs.mkdir(promptsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return promptsDir;\n}\n\nexport async function saveSessionMetadata(metadata: SessionMetadata): Promise<void> {\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${metadata.sessionName}.json`);\n await fs.writeFile(filePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nexport async function writeSessionPromptFile(\n sessionName: string,\n prompt: string\n): Promise<{ success: boolean; filePath?: string; error?: string }> {\n try {\n const promptsDir = await getSessionPromptsDir();\n const filePath = path.join(promptsDir, `${sessionName}.txt`);\n await fs.writeFile(filePath, prompt, 'utf-8');\n return { success: true, filePath };\n } catch (e: unknown) {\n console.error('Failed to write session prompt file:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function saveSessionLaunchContext(\n sessionName: string,\n context: Omit<SessionLaunchContext, 'sessionName' | 'timestamp'>\n): Promise<{ success: boolean; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const contextData: SessionLaunchContext = {\n sessionName,\n ...context,\n timestamp: new Date().toISOString(),\n };\n await fs.writeFile(filePath, JSON.stringify(contextData, null, 2), 'utf-8');\n return { success: true };\n } catch (e: unknown) {\n console.error('Failed to save session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function consumeSessionLaunchContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionLaunchContext; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const content = await fs.readFile(filePath, 'utf-8');\n const context = JSON.parse(content) as SessionLaunchContext;\n return { success: true, context };\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n if (errorCode === 'ENOENT') {\n return { success: true };\n }\n console.error('Failed to consume session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nasync function getSessionLaunchContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionLaunchContext; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const content = await fs.readFile(filePath, 'utf-8');\n const context = JSON.parse(content) as SessionLaunchContext;\n return { success: true, context };\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n if (errorCode === 'ENOENT') {\n return { success: true };\n }\n console.error('Failed to read session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionPrefillContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionPrefillContext; error?: string }> {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const launchContextResult = await getSessionLaunchContext(sessionName);\n if (!launchContextResult.success) {\n return { success: false, error: launchContextResult.error || 'Failed to load session launch context' };\n }\n\n const launchContext = launchContextResult.context;\n const prefill: SessionPrefillContext = {\n sourceSessionName: sessionName,\n repoPath: metadata.repoPath,\n title: launchContext?.title || metadata.title,\n initialMessage: launchContext?.rawInitialMessage || launchContext?.initialMessage,\n attachmentNames: launchContext?.attachmentNames || [],\n agentProvider: launchContext?.agentProvider || metadata.agent,\n model: launchContext?.model || metadata.model,\n };\n\n return { success: true, context: prefill };\n}\n\nexport async function copySessionAttachments(\n sourceSessionName: string,\n targetWorktreePath: string,\n requestedAttachmentNames: string[]\n): Promise<{ success: boolean; copiedAttachmentNames: string[]; missingAttachmentNames: string[]; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sourceSessionName);\n if (!metadata) {\n return {\n success: false,\n copiedAttachmentNames: [],\n missingAttachmentNames: [],\n error: 'Source session metadata not found',\n };\n }\n\n const sourceAttachmentsDir = `${metadata.worktreePath}-attachments`;\n const targetAttachmentsDir = `${targetWorktreePath}-attachments`;\n await fs.mkdir(targetAttachmentsDir, { recursive: true });\n\n const copiedAttachmentNames: string[] = [];\n const missingAttachmentNames: string[] = [];\n const dedupedRequestedNames = Array.from(\n new Set(requestedAttachmentNames.map((name) => name.trim()).filter(Boolean))\n );\n\n for (const name of dedupedRequestedNames) {\n const safeName = name.replace(/[^a-zA-Z0-9._-]/g, '_');\n const sourcePath = path.join(sourceAttachmentsDir, safeName);\n const targetPath = path.join(targetAttachmentsDir, safeName);\n\n try {\n await fs.copyFile(sourcePath, targetPath);\n copiedAttachmentNames.push(safeName);\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n\n if (errorCode === 'ENOENT') {\n missingAttachmentNames.push(name);\n continue;\n }\n\n throw e;\n }\n }\n\n return { success: true, copiedAttachmentNames, missingAttachmentNames };\n } catch (e: unknown) {\n console.error('Failed to copy session attachments:', e);\n return {\n success: false,\n copiedAttachmentNames: [],\n missingAttachmentNames: [],\n error: getErrorMessage(e),\n };\n }\n}\n\nexport async function getSessionMetadata(sessionName: string): Promise<SessionMetadata | null> {\n try {\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${sessionName}.json`);\n const content = await fs.readFile(filePath, 'utf-8');\n return JSON.parse(content) as SessionMetadata;\n } catch {\n return null;\n }\n}\n\nexport async function listSessions(repoPath?: string): Promise<SessionMetadata[]> {\n try {\n const sessionsDir = await getSessionsDir();\n const entries = await fs.readdir(sessionsDir);\n\n const sessionPromises = entries\n .filter((entry) => entry.endsWith('.json'))\n .map(async (entry) => {\n try {\n const filePath = path.join(sessionsDir, entry);\n const content = await fs.readFile(filePath, 'utf-8');\n const data = JSON.parse(content) as SessionMetadata;\n return data;\n } catch (e) {\n console.error(`Failed to parse session file ${entry}:`, e);\n return null;\n }\n });\n\n const sessions = (await Promise.all(sessionPromises)).filter((s): s is SessionMetadata => {\n if (!s) return false;\n if (repoPath && s.repoPath !== repoPath) return false;\n return true;\n });\n\n // Sort by timestamp desc\n return sessions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());\n } catch (error) {\n console.error('Failed to list sessions:', error);\n return [];\n }\n}\n\nexport async function createSession(\n repoPath: string,\n baseBranch: string,\n metadata: { agent: string; model: string; title?: string; devServerScript?: string }\n): Promise<{ success: boolean; sessionName?: string; worktreePath?: string; branchName?: string; error?: string }> {\n try {\n // 1. Prepare worktree\n const result = await prepareSessionWorktree(repoPath, baseBranch);\n\n if (!result.success || !result.sessionName || !result.worktreePath || !result.branchName) {\n return result;\n }\n\n // 2. Save metadata\n const sessionData: SessionMetadata = {\n sessionName: result.sessionName,\n repoPath,\n worktreePath: result.worktreePath,\n branchName: result.branchName,\n baseBranch,\n agent: metadata.agent,\n model: metadata.model,\n title: metadata.title,\n devServerScript: metadata.devServerScript,\n initialized: false,\n timestamp: new Date().toISOString(),\n };\n\n await saveSessionMetadata(sessionData);\n\n return result;\n } catch (e: unknown) {\n console.error(\"Failed to create session:\", e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function markSessionInitialized(sessionName: string): Promise<void> {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) return;\n if (metadata.initialized) return;\n\n metadata.initialized = true;\n await saveSessionMetadata(metadata);\n}\n\nexport async function deleteSession(sessionName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n // 1. Remove worktree\n const result = await removeWorktree(metadata.repoPath, metadata.worktreePath, metadata.branchName);\n await terminateSessionTerminalSessions(sessionName);\n if (!result.success) {\n return result;\n }\n\n // 2. Delete metadata file\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${sessionName}.json`);\n await fs.rm(filePath, { force: true });\n const contextFilePath = await getSessionContextFilePath(sessionName);\n await fs.rm(contextFilePath, { force: true });\n\n // 3. Delete prompt file\n const promptsDir = await getSessionPromptsDir();\n const promptFilePath = path.join(promptsDir, `${sessionName}.txt`);\n await fs.rm(promptFilePath, { force: true });\n\n return { success: true };\n } catch (e: unknown) {\n console.error(\"Failed to delete session:\", e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function deleteSessionInBackground(sessionName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n // Resolve immediately but continue cleanup in the background.\n // This allows the client to navigate away without the request being cancelled.\n void deleteSession(sessionName).catch((error) => {\n console.error(`Background cleanup of session ${sessionName} failed:`, error);\n });\n\n return { success: true };\n } catch (e: unknown) {\n console.error('Failed to schedule background session deletion:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function mergeSessionToBase(\n sessionName: string\n): Promise<{ success: boolean; branchName?: string; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return {\n success: false,\n error: 'Base branch is missing for this session. This session may be from an older version.',\n };\n }\n\n const worktreeGit = simpleGit(metadata.worktreePath);\n const worktreeStatus = await worktreeGit.status();\n if (!worktreeStatus.isClean()) {\n return {\n success: false,\n error: 'Worktree has uncommitted changes. Commit your changes first.',\n };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const originalBranch = branchSummary.current;\n if (originalBranch !== baseBranch) {\n await git.checkout(baseBranch);\n }\n\n // Always create a merge commit record instead of fast-forwarding.\n await git.merge(['--no-ff', metadata.branchName]);\n\n if (originalBranch && originalBranch !== baseBranch) {\n await git.checkout(originalBranch);\n }\n\n return {\n success: true,\n branchName: metadata.branchName,\n baseBranch,\n };\n } catch (e: unknown) {\n console.error('Failed to merge session branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function rebaseSessionOntoBase(\n sessionName: string\n): Promise<{ success: boolean; branchName?: string; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return {\n success: false,\n error: 'Base branch is missing for this session. This session may be from an older version.',\n };\n }\n\n const worktreeGit = simpleGit(metadata.worktreePath);\n const worktreeStatus = await worktreeGit.status();\n if (!worktreeStatus.isClean()) {\n return {\n success: false,\n error: 'Worktree has uncommitted changes. Commit your changes first.',\n };\n }\n\n const repoGit = simpleGit(metadata.repoPath);\n const branchSummary = await repoGit.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const worktreeBranchSummary = await worktreeGit.branchLocal();\n if (worktreeBranchSummary.current !== metadata.branchName) {\n await worktreeGit.checkout(metadata.branchName);\n }\n\n await worktreeGit.rebase([baseBranch]);\n\n return {\n success: true,\n branchName: metadata.branchName,\n baseBranch,\n };\n } catch (e: unknown) {\n console.error('Failed to rebase session branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionUncommittedFileCount(\n sessionName: string\n): Promise<{ success: boolean; count?: number; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const git = simpleGit(metadata.worktreePath);\n const status = await git.status();\n\n return { success: true, count: status.files.length };\n } catch (e: unknown) {\n console.error('Failed to get uncommitted file count:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionDivergence(\n sessionName: string\n): Promise<{ success: boolean; ahead?: number; behind?: number; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return { success: false, error: 'Base branch is unavailable for this session.' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const rawCounts = await git.raw(['rev-list', '--left-right', '--count', `${baseBranch}...${metadata.branchName}`]);\n const [behindRaw, aheadRaw] = rawCounts.trim().split(/\\s+/);\n const behind = Number.parseInt(behindRaw, 10);\n const ahead = Number.parseInt(aheadRaw, 10);\n\n if (Number.isNaN(behind) || Number.isNaN(ahead)) {\n return { success: false, error: 'Failed to parse git divergence output.' };\n }\n\n return { success: true, ahead, behind };\n } catch (e: unknown) {\n console.error('Failed to get session divergence:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function listSessionBaseBranches(\n sessionName: string\n): Promise<{ success: boolean; baseBranch?: string; branches?: string[]; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n const branches = [...branchSummary.all].sort((a, b) => a.localeCompare(b));\n const baseBranch = metadata.baseBranch?.trim();\n\n return { success: true, baseBranch, branches };\n } catch (e: unknown) {\n console.error('Failed to list session base branches:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function updateSessionBaseBranch(\n sessionName: string,\n baseBranch: string\n): Promise<{ success: boolean; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const nextBaseBranch = baseBranch.trim();\n if (!nextBaseBranch) {\n return { success: false, error: 'Base branch cannot be empty.' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(nextBaseBranch)) {\n return { success: false, error: `Base branch \"${nextBaseBranch}\" not found in repository.` };\n }\n\n metadata.baseBranch = nextBaseBranch;\n await saveSessionMetadata(metadata);\n\n return { success: true, baseBranch: nextBaseBranch };\n } catch (e: unknown) {\n console.error('Failed to update session base branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n"],"names":["Buffer","trimmed","ExitCodes","commands","parser","parsers","CheckRepoActions","CleanOptions","append","GitConfigScope","DiffNameStatus","ResetMode","debug","onError","excludeOptions","disallowedCommand","GitExecutor","SimpleGitApi","Scheduler","configurationErrorTask","asArray","filterArray","filterPrimitives","filterString","filterStringOrStringArray","filterType","getTrailingOptions","trailingFunctionArgument","trailingOptionsArgument","applyPatchTask","branchTask","branchLocalTask","deleteBranchesTask","deleteBranchTask","checkIgnoreTask","checkIsRepoTask","cloneTask","cloneMirrorTask","cleanWithOptionsTask","isCleanOptionsArray","diffSummaryTask","fetchTask","moveTask","pullTask","pushTagsTask","addRemoteTask","getRemotesTask","listRemotesTask","remoteTask","removeRemoteTask","getResetMode","resetTask","stashListTask","addSubModuleTask","initSubModuleTask","subModuleTask","updateSubModuleTask","addAnnotatedTagTask","addTagTask","tagListTask","straightThroughBufferTask","straightThroughStringTask","Git","input","plugin","git","args"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/ms/index.js","../../../../node_modules/debug/src/common.js","../../../../node_modules/has-flag/index.js","../../../../node_modules/supports-color/index.js","../../../../node_modules/debug/src/node.js","../../../../node_modules/debug/src/browser.js","../../../../node_modules/debug/src/index.js","../../../../node_modules/%40kwsites/file-exists/src/index.ts","../../../../node_modules/%40kwsites/file-exists/index.ts","../../../../node_modules/%40kwsites/promise-deferred/src/index.ts","../../../../node_modules/simple-git/src/lib/args/pathspec.ts","../../../../node_modules/simple-git/src/lib/errors/git-error.ts","../../../../node_modules/simple-git/src/lib/errors/git-response-error.ts","../../../../node_modules/simple-git/src/lib/errors/task-configuration-error.ts","../../../../node_modules/simple-git/src/lib/utils/util.ts","../../../../node_modules/simple-git/src/lib/utils/argument-filters.ts","../../../../node_modules/simple-git/src/lib/utils/exit-codes.ts","../../../../node_modules/simple-git/src/lib/utils/git-output-streams.ts","../../../../node_modules/simple-git/src/lib/utils/line-parser.ts","../../../../node_modules/simple-git/src/lib/utils/simple-git-options.ts","../../../../node_modules/simple-git/src/lib/utils/task-options.ts","../../../../node_modules/simple-git/src/lib/utils/task-parser.ts","../../../../node_modules/simple-git/src/lib/utils/index.ts","../../../../node_modules/simple-git/src/lib/tasks/check-is-repo.ts","../../../../node_modules/simple-git/src/lib/responses/CleanSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/task.ts","../../../../node_modules/simple-git/src/lib/tasks/clean.ts","../../../../node_modules/simple-git/src/lib/responses/ConfigList.ts","../../../../node_modules/simple-git/src/lib/tasks/config.ts","../../../../node_modules/simple-git/src/lib/tasks/diff-name-status.ts","../../../../node_modules/simple-git/src/lib/tasks/grep.ts","../../../../node_modules/simple-git/src/lib/tasks/reset.ts","../../../../node_modules/simple-git/src/lib/git-logger.ts","../../../../node_modules/simple-git/src/lib/runners/tasks-pending-queue.ts","../../../../node_modules/simple-git/src/lib/runners/git-executor-chain.ts","../../../../node_modules/simple-git/src/lib/runners/git-executor.ts","../../../../node_modules/simple-git/src/lib/task-callback.ts","../../../../node_modules/simple-git/src/lib/tasks/change-working-directory.ts","../../../../node_modules/simple-git/src/lib/tasks/checkout.ts","../../../../node_modules/simple-git/src/lib/tasks/count-objects.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-commit.ts","../../../../node_modules/simple-git/src/lib/tasks/commit.ts","../../../../node_modules/simple-git/src/lib/tasks/first-commit.ts","../../../../node_modules/simple-git/src/lib/tasks/hash-object.ts","../../../../node_modules/simple-git/src/lib/responses/InitSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/init.ts","../../../../node_modules/simple-git/src/lib/args/log-format.ts","../../../../node_modules/simple-git/src/lib/responses/DiffSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-diff-summary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-list-log-summary.ts","../../../../node_modules/simple-git/src/lib/tasks/diff.ts","../../../../node_modules/simple-git/src/lib/tasks/log.ts","../../../../node_modules/simple-git/src/lib/responses/MergeSummary.ts","../../../../node_modules/simple-git/src/lib/responses/PullSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-remote-objects.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-remote-messages.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-pull.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-merge.ts","../../../../node_modules/simple-git/src/lib/tasks/merge.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-push.ts","../../../../node_modules/simple-git/src/lib/tasks/push.ts","../../../../node_modules/simple-git/src/lib/tasks/show.ts","../../../../node_modules/simple-git/src/lib/responses/FileStatusSummary.ts","../../../../node_modules/simple-git/src/lib/responses/StatusSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/status.ts","../../../../node_modules/simple-git/src/lib/tasks/version.ts","../../../../node_modules/simple-git/src/lib/simple-git-api.ts","../../../../node_modules/simple-git/src/lib/runners/scheduler.ts","../../../../node_modules/simple-git/src/lib/tasks/apply-patch.ts","../../../../node_modules/simple-git/src/lib/responses/BranchDeleteSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-branch-delete.ts","../../../../node_modules/simple-git/src/lib/responses/BranchSummary.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-branch.ts","../../../../node_modules/simple-git/src/lib/tasks/branch.ts","../../../../node_modules/simple-git/src/lib/responses/CheckIgnore.ts","../../../../node_modules/simple-git/src/lib/tasks/check-ignore.ts","../../../../node_modules/simple-git/src/lib/tasks/clone.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-fetch.ts","../../../../node_modules/simple-git/src/lib/tasks/fetch.ts","../../../../node_modules/simple-git/src/lib/parsers/parse-move.ts","../../../../node_modules/simple-git/src/lib/tasks/move.ts","../../../../node_modules/simple-git/src/lib/tasks/pull.ts","../../../../node_modules/simple-git/src/lib/responses/GetRemoteSummary.ts","../../../../node_modules/simple-git/src/lib/tasks/remote.ts","../../../../node_modules/simple-git/src/lib/tasks/stash-list.ts","../../../../node_modules/simple-git/src/lib/tasks/sub-module.ts","../../../../node_modules/simple-git/src/lib/responses/TagList.ts","../../../../node_modules/simple-git/src/lib/tasks/tag.ts","../../../../node_modules/simple-git/src/git.js","../../../../node_modules/simple-git/src/lib/api.ts","../../../../node_modules/simple-git/src/lib/errors/git-construct-error.ts","../../../../node_modules/simple-git/src/lib/errors/git-plugin-error.ts","../../../../node_modules/simple-git/src/lib/plugins/abort-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/block-unsafe-operations-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/command-config-prefixing-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/completion-detection.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/custom-binary.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/error-detection.plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/plugin-store.ts","../../../../node_modules/simple-git/src/lib/plugins/progress-monitor-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/spawn-options-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/timout-plugin.ts","../../../../node_modules/simple-git/src/lib/plugins/suffix-paths.plugin.ts","../../../../node_modules/simple-git/src/lib/git-factory.ts","../../../../node_modules/simple-git/src/lib/runners/promise-wrapped.ts","../../../../node_modules/simple-git/src/esm.mjs","../../../../src/lib/error-utils.ts","../../../../src/app/actions/git.ts","../../../../src/app/actions/config.ts","../../../../src/lib/terminal-session.ts","../../../../src/app/actions/session.ts"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","unable to read source [project]/node_modules/@kwsites/file-exists/src/index.ts","unable to read source [project]/node_modules/@kwsites/file-exists/index.ts","unable to read source [project]/node_modules/@kwsites/promise-deferred/src/index.ts","const cache = new WeakMap<String, string[]>();\n\nexport function pathspec(...paths: string[]) {\n const key = new String(paths);\n cache.set(key, paths);\n\n return key as string;\n}\n\nexport function isPathSpec(path: string | unknown): path is string {\n return path instanceof String && cache.has(path);\n}\n\nexport function toPaths(pathSpec: string): string[] {\n return cache.get(pathSpec) || [];\n}\n","import type { SimpleGitTask } from '../types';\n\n/**\n * The `GitError` is thrown when the underlying `git` process throws a\n * fatal exception (eg an `ENOENT` exception when attempting to use a\n * non-writable directory as the root for your repo), and acts as the\n * base class for more specific errors thrown by the parsing of the\n * git response or errors in the configuration of the task about to\n * be run.\n *\n * When an exception is thrown, pending tasks in the same instance will\n * not be executed. The recommended way to run a series of tasks that\n * can independently fail without needing to prevent future tasks from\n * running is to catch them individually:\n *\n * ```typescript\n import { gitP, SimpleGit, GitError, PullResult } from 'simple-git';\n\n function catchTask (e: GitError) {\n return e.\n }\n\n const git = gitP(repoWorkingDir);\n const pulled: PullResult | GitError = await git.pull().catch(catchTask);\n const pushed: string | GitError = await git.pushTags().catch(catchTask);\n ```\n */\nexport class GitError extends Error {\n constructor(\n public task?: SimpleGitTask<any>,\n message?: string\n ) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { GitError } from './git-error';\n\n/**\n * The `GitResponseError` is the wrapper for a parsed response that is treated as\n * a fatal error, for example attempting a `merge` can leave the repo in a corrupted\n * state when there are conflicts so the task will reject rather than resolve.\n *\n * For example, catching the merge conflict exception:\n *\n * ```typescript\n import { gitP, SimpleGit, GitResponseError, MergeSummary } from 'simple-git';\n\n const git = gitP(repoRoot);\n const mergeOptions: string[] = ['--no-ff', 'other-branch'];\n const mergeSummary: MergeSummary = await git.merge(mergeOptions)\n .catch((e: GitResponseError<MergeSummary>) => e.git);\n\n if (mergeSummary.failed) {\n // deal with the error\n }\n ```\n */\nexport class GitResponseError<T = any> extends GitError {\n constructor(\n /**\n * `.git` access the parsed response that is treated as being an error\n */\n public readonly git: T,\n message?: string\n ) {\n super(undefined, message || String(git));\n }\n}\n","import { GitError } from './git-error';\n\n/**\n * The `TaskConfigurationError` is thrown when a command was incorrectly\n * configured. An error of this kind means that no attempt was made to\n * run your command through the underlying `git` binary.\n *\n * Check the `.message` property for more detail on why your configuration\n * resulted in an error.\n */\nexport class TaskConfigurationError extends GitError {\n constructor(message?: string) {\n super(undefined, message);\n }\n}\n","import { Buffer } from 'node:buffer';\nimport { exists, FOLDER } from '@kwsites/file-exists';\nimport type { Maybe } from '../types';\nimport { filterHasLength } from './argument-filters';\n\ntype Callable = (...args: unknown[]) => unknown;\n\nexport const NULL = '\\0';\n\nexport const NOOP: Callable = () => {};\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function asFunction<T>(source: T | unknown): Callable {\n if (typeof source !== 'function') {\n return NOOP;\n }\n return source as Callable;\n}\n\n/**\n * Determines whether the supplied argument is both a function, and is not\n * the `NOOP` function.\n */\nexport function isUserFunction<T extends Function>(source: T | unknown): source is T {\n return typeof source === 'function' && source !== NOOP;\n}\n\nexport function splitOn(input: string, char: string): [string, string] {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, ''];\n }\n\n return [input.substr(0, index), input.substr(index + 1)];\n}\n\nexport function first<T extends unknown[]>(input: T, offset?: number): Maybe<T[number]>;\nexport function first<T extends IArguments>(input: T, offset?: number): Maybe<unknown>;\nexport function first(input: unknown[] | IArguments, offset = 0): Maybe<unknown> {\n return isArrayLike(input) && input.length > offset ? input[offset] : undefined;\n}\n\nexport function last<T extends unknown[]>(input: T, offset?: number): Maybe<T[number]>;\nexport function last<T extends IArguments>(input: T, offset?: number): Maybe<unknown>;\nexport function last<T>(input: T, offset?: number): Maybe<unknown>;\nexport function last(input: unknown, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\n\ntype ArrayLike<T> = T[] | IArguments | { [index: number]: T; length: number };\n\nfunction isArrayLike(input: unknown): input is ArrayLike<unknown> {\n return filterHasLength(input);\n}\n\nexport function toLinesWithContent(input = '', trimmed = true, separator = '\\n'): string[] {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, [] as string[]);\n}\n\ntype LineWithContentCallback<T = void> = (line: string) => T;\n\nexport function forEachLineWithContent<T>(\n input: string,\n callback: LineWithContentCallback<T>\n): T[] {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\n\nexport function folderExists(path: string): boolean {\n return exists(path, FOLDER);\n}\n\n/**\n * Adds `item` into the `target` `Array` or `Set` when it is not already present and returns the `item`.\n */\nexport function append<T>(target: T[] | Set<T>, item: T): typeof item {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\n\n/**\n * Adds `item` into the `target` `Array` when it is not already present and returns the `target`.\n */\nexport function including<T>(target: T[], item: T): typeof target {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n\n return target;\n}\n\nexport function remove<T>(target: Set<T> | T[], item: T): T {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\n\nexport const objectToString = Object.prototype.toString.call.bind(Object.prototype.toString) as (\n input: unknown\n) => string;\n\nexport function asArray<T>(source: T | T[]): T[] {\n return Array.isArray(source) ? source : [source];\n}\n\nexport function asCamelCase(str: string) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\n\nexport function asStringArray<T>(source: T | T[]): string[] {\n return asArray(source).map((item) => {\n return item instanceof String ? (item as string) : String(item);\n });\n}\n\nexport function asNumber(source: string | null | undefined, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\n\nexport function prefixedArray<T>(input: T[], prefix: T): T[] {\n const output: T[] = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\n\nexport function bufferToString(input: Buffer | Buffer[]): string {\n return (Array.isArray(input) ? Buffer.concat(input) : input).toString('utf-8');\n}\n\n/**\n * Get a new object from a source object with only the listed properties.\n */\nexport function pick<T, K extends keyof T>(source: T, properties: readonly K[]) {\n const out: Partial<Pick<T, K>> = {};\n\n properties.forEach((key) => {\n if (source[key] !== undefined) {\n out[key] = source[key];\n }\n });\n\n return out;\n}\n\nexport function delay(duration = 0): Promise<void> {\n return new Promise((done) => setTimeout(done, duration));\n}\n\nexport function orVoid<T>(input: T | false) {\n if (input === false) {\n return undefined;\n }\n return input;\n}\n","import { isPathSpec } from '../args/pathspec';\nimport type { Maybe, Options, Primitives } from '../types';\nimport { objectToString } from './util';\n\nexport type ArgumentFilterPredicate<T> = (input: T | unknown) => input is T;\n\nexport function filterType<T, K>(\n input: K,\n filter: ArgumentFilterPredicate<T>\n): K extends T ? T : undefined;\nexport function filterType<T, K>(input: K, filter: ArgumentFilterPredicate<T>, def: T): T;\nexport function filterType<T, K>(input: K, filter: ArgumentFilterPredicate<T>, def?: T): Maybe<T> {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : undefined;\n}\n\nexport const filterArray: ArgumentFilterPredicate<Array<unknown>> = (\n input\n): input is Array<unknown> => {\n return Array.isArray(input);\n};\n\nexport function filterPrimitives(\n input: unknown,\n omit?: Array<'boolean' | 'string' | 'number'>\n): input is Primitives {\n const type = isPathSpec(input) ? 'string' : typeof input;\n\n return (\n /number|string|boolean/.test(type) &&\n (!omit || !omit.includes(type as 'boolean' | 'string' | 'number'))\n );\n}\n\nexport const filterNumber: ArgumentFilterPredicate<number> = (input: unknown): input is number => {\n return typeof input === 'number';\n};\n\nexport const filterString: ArgumentFilterPredicate<string> = (input: unknown): input is string => {\n return typeof input === 'string';\n};\n\nexport const filterStringOrStringArray: ArgumentFilterPredicate<string | string[]> = (\n input\n): input is string | string[] => {\n return filterString(input) || (Array.isArray(input) && input.every(filterString));\n};\n\nexport function filterPlainObject<T extends Options>(input: T | unknown): input is T;\nexport function filterPlainObject<T extends Record<string, unknown>>(\n input: T | unknown\n): input is T {\n return !!input && objectToString(input) === '[object Object]';\n}\n\nexport function filterFunction(input: unknown): input is (...args: unknown[]) => unknown {\n return typeof input === 'function';\n}\n\nexport const filterHasLength: ArgumentFilterPredicate<{ length: number }> = (\n input\n): input is { length: number } => {\n if (input == null || 'number|boolean|function'.includes(typeof input)) {\n return false;\n }\n\n return typeof (input as { length?: number }).length === 'number';\n};\n","/**\n * Known process exit codes used by the task parsers to determine whether an error\n * was one they can automatically handle\n */\nexport enum ExitCodes {\n SUCCESS,\n ERROR,\n NOT_FOUND = -2,\n UNCLEAN = 128,\n}\n","import { TaskResponseFormat } from '../types';\n\nexport class GitOutputStreams<T extends TaskResponseFormat = Buffer> {\n constructor(\n public readonly stdOut: T,\n public readonly stdErr: T\n ) {}\n\n asStrings(): GitOutputStreams<string> {\n return new GitOutputStreams(this.stdOut.toString('utf8'), this.stdErr.toString('utf8'));\n }\n}\n","function useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\n\nexport class LineParser<T> {\n protected matches: string[] = [];\n protected useMatches: (target: T, match: string[]) => boolean | void = useMatchesDefault;\n\n private _regExp: RegExp[];\n\n constructor(\n regExp: RegExp | RegExp[],\n useMatches?: (target: T, match: string[]) => boolean | void\n ) {\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n\n parse = (line: (offset: number) => string | undefined, target: T): boolean => {\n this.resetMatches();\n\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n\n protected resetMatches() {\n this.matches.length = 0;\n }\n\n protected prepareMatches() {\n return this.matches;\n }\n\n protected addMatch(reg: RegExp, index: number, line?: string) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n\n return !!matched;\n }\n\n protected pushMatch(_index: number, matched: string[]) {\n this.matches.push(...matched.slice(1));\n }\n}\n\nexport class RemoteLineParser<T> extends LineParser<T> {\n protected addMatch(reg: RegExp, index: number, line?: string): boolean {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n\n protected pushMatch(index: number, matched: string[]) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n}\n","import { SimpleGitOptions } from '../types';\n\nconst defaultOptions: Omit<SimpleGitOptions, 'baseDir'> = {\n binary: 'git',\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false,\n};\n\nexport function createInstanceConfig(\n ...options: Array<Partial<SimpleGitOptions> | undefined>\n): SimpleGitOptions {\n const baseDir = process.cwd();\n const config: SimpleGitOptions = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === 'object' && o)\n );\n\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n\n return config;\n}\n","import {\n filterArray,\n filterFunction,\n filterPlainObject,\n filterPrimitives,\n filterType,\n} from './argument-filters';\nimport { asFunction, asStringArray, isUserFunction, last } from './util';\nimport { Maybe, Options } from '../types';\nimport { isPathSpec } from '../args/pathspec';\n\nexport function appendTaskOptions<T extends Options = Options>(\n options: Maybe<T>,\n commands: string[] = []\n): string[] {\n if (!filterPlainObject<Options>(options)) {\n return commands;\n }\n\n return Object.keys(options).reduce((commands: string[], key: string) => {\n const value = options[key];\n\n if (isPathSpec(value)) {\n commands.push(value);\n } else if (filterPrimitives(value, ['boolean'])) {\n commands.push(key + '=' + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, ['string', 'number'])) {\n commands.push(key + '=' + v);\n }\n }\n } else {\n commands.push(key);\n }\n\n return commands;\n }, commands);\n}\n\nexport function getTrailingOptions(\n args: IArguments,\n initialPrimitive = 0,\n objectOnly = false\n): string[] {\n const command: string[] = [];\n\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if ('string|number'.includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n\n return command;\n}\n\nfunction trailingArrayArgument(args: IArguments) {\n const hasTrailingCallback = typeof last(args) === 'function';\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\n\n/**\n * Given any number of arguments, returns the trailing options argument, ignoring a trailing function argument\n * if there is one. When not found, the return value is null.\n */\nexport function trailingOptionsArgument(args: IArguments): Maybe<Options> {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\n\n/**\n * Returns either the source argument when it is a `Function`, or the default\n * `NOOP` function constant\n */\nexport function trailingFunctionArgument(\n args: unknown[] | IArguments | unknown,\n includeNoop = true\n): Maybe<(...args: unknown[]) => unknown> {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : undefined;\n}\n","import type { MaybeArray, TaskParser, TaskResponseFormat } from '../types';\nimport { GitOutputStreams } from './git-output-streams';\nimport { LineParser } from './line-parser';\nimport { asArray, toLinesWithContent } from './util';\n\nexport function callTaskParser<INPUT extends TaskResponseFormat, RESPONSE>(\n parser: TaskParser<INPUT, RESPONSE>,\n streams: GitOutputStreams<INPUT>\n) {\n return parser(streams.stdOut, streams.stdErr);\n}\n\nexport function parseStringResponse<T>(\n result: T,\n parsers: LineParser<T>[],\n texts: MaybeArray<string>,\n trim = true\n): T {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n\n parsers.some(({ parse }) => parse(line, result));\n }\n });\n\n return result;\n}\n","export * from './argument-filters';\nexport * from './exit-codes';\nexport * from './git-output-streams';\nexport * from './line-parser';\nexport * from './simple-git-options';\nexport * from './task-options';\nexport * from './task-parser';\nexport * from './util';\n","import { ExitCodes } from '../utils';\nimport { Maybe, StringTask } from '../types';\n\nexport enum CheckRepoActions {\n BARE = 'bare',\n IN_TREE = 'tree',\n IS_REPO_ROOT = 'root',\n}\n\nconst onError: StringTask<boolean>['onError'] = ({ exitCode }, error, done, fail) => {\n if (exitCode === ExitCodes.UNCLEAN && isNotRepoMessage(error)) {\n return done(Buffer.from('false'));\n }\n\n fail(error);\n};\n\nconst parser: StringTask<boolean>['parser'] = (text) => {\n return text.trim() === 'true';\n};\n\nexport function checkIsRepoTask(action: Maybe<CheckRepoActions>): StringTask<boolean> {\n switch (action) {\n case CheckRepoActions.BARE:\n return checkIsBareRepoTask();\n case CheckRepoActions.IS_REPO_ROOT:\n return checkIsRepoRootTask();\n }\n\n const commands = ['rev-parse', '--is-inside-work-tree'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nexport function checkIsRepoRootTask(): StringTask<boolean> {\n const commands = ['rev-parse', '--git-dir'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n },\n };\n}\n\nexport function checkIsBareRepoTask(): StringTask<boolean> {\n const commands = ['rev-parse', '--is-bare-repository'];\n\n return {\n commands,\n format: 'utf-8',\n onError,\n parser,\n };\n}\n\nfunction isNotRepoMessage(error: Error): boolean {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\n","import { CleanSummary } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\n\nexport class CleanResponse implements CleanSummary {\n public paths: string[] = [];\n public files: string[] = [];\n public folders: string[] = [];\n\n constructor(public readonly dryRun: boolean) {}\n}\n\nconst removalRegexp = /^[a-z]+\\s*/i;\nconst dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\nconst isFolderRegexp = /\\/$/;\n\nexport function cleanSummaryParser(dryRun: boolean, text: string): CleanSummary {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, '');\n\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n\n return summary;\n}\n","import { TaskConfigurationError } from '../errors/task-configuration-error';\nimport type { BufferTask, EmptyTaskParser, SimpleGitTask, StringTask } from '../types';\n\nexport const EMPTY_COMMANDS: [] = [];\n\nexport type EmptyTask = {\n commands: typeof EMPTY_COMMANDS;\n format: 'empty';\n parser: EmptyTaskParser;\n onError?: undefined;\n};\n\nexport function adhocExecTask(parser: EmptyTaskParser): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser,\n };\n}\n\nexport function configurationErrorTask(error: Error | string): EmptyTask {\n return {\n commands: EMPTY_COMMANDS,\n format: 'empty',\n parser() {\n throw typeof error === 'string' ? new TaskConfigurationError(error) : error;\n },\n };\n}\n\nexport function straightThroughStringTask(commands: string[], trimmed = false): StringTask<string> {\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return trimmed ? String(text).trim() : text;\n },\n };\n}\n\nexport function straightThroughBufferTask(commands: string[]): BufferTask<Buffer> {\n return {\n commands,\n format: 'buffer',\n parser(buffer) {\n return buffer;\n },\n };\n}\n\nexport function isBufferTask<R>(task: SimpleGitTask<R>): task is BufferTask<R> {\n return task.format === 'buffer';\n}\n\nexport function isEmptyTask<R>(task: SimpleGitTask<R>): task is EmptyTask {\n return task.format === 'empty' || !task.commands.length;\n}\n","import { CleanSummary } from '../../../typings';\nimport { cleanSummaryParser } from '../responses/CleanSummary';\nimport { Maybe, StringTask } from '../types';\nimport { asStringArray } from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport const CONFIG_ERROR_INTERACTIVE_MODE = 'Git clean interactive mode is not supported';\nexport const CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\nexport const CONFIG_ERROR_UNKNOWN_OPTION = 'Git clean unknown option found in: ';\n\n/**\n * All supported option switches available for use in a `git.clean` operation\n */\nexport enum CleanOptions {\n DRY_RUN = 'n',\n FORCE = 'f',\n IGNORED_INCLUDED = 'x',\n IGNORED_ONLY = 'X',\n EXCLUDING = 'e',\n QUIET = 'q',\n RECURSIVE = 'd',\n}\n\n/**\n * The two modes `git.clean` can run in - one of these must be supplied in order\n * for the command to not throw a `TaskConfigurationError`\n */\nexport type CleanMode = CleanOptions.FORCE | CleanOptions.DRY_RUN;\n\nconst CleanOptionValues: Set<string> = new Set([\n 'i',\n ...asStringArray(Object.values(CleanOptions as any)),\n]);\n\nexport function cleanWithOptionsTask(mode: CleanMode | string, customArgs: string[]) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n\n options.push(...customArgs);\n\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n\n return cleanTask(cleanMode, options);\n}\n\nexport function cleanTask(mode: CleanMode, customArgs: string[]): StringTask<CleanSummary> {\n const commands: string[] = ['clean', `-${mode}`, ...customArgs];\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): CleanSummary {\n return cleanSummaryParser(mode === CleanOptions.DRY_RUN, text);\n },\n };\n}\n\nexport function isCleanOptionsArray(input: string[]): input is CleanOptions[] {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\n\nfunction getCleanOptions(input: string) {\n let cleanMode: Maybe<CleanMode>;\n let options: string[] = [];\n let valid = { cleanMode: false, options: true };\n\n input\n .replace(/[^a-z]i/g, '')\n .split('')\n .forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption((options[options.length] = `-${char}`));\n }\n });\n\n return {\n cleanMode,\n options,\n valid,\n };\n}\n\nfunction isCleanMode(cleanMode?: string): cleanMode is CleanMode {\n return cleanMode === CleanOptions.FORCE || cleanMode === CleanOptions.DRY_RUN;\n}\n\nfunction isKnownOption(option: string): boolean {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\n\nfunction isInteractiveMode(option: string): boolean {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf('i') > 0;\n }\n\n return option === '--interactive';\n}\n","import { ConfigGetResult, ConfigListSummary, ConfigValues } from '../../../typings';\nimport { last, splitOn } from '../utils';\n\nexport class ConfigList implements ConfigListSummary {\n public files: string[] = [];\n public values: { [fileName: string]: ConfigValues } = Object.create(null);\n\n private _all: ConfigValues | undefined;\n\n public get all(): ConfigValues {\n if (!this._all) {\n this._all = this.files.reduce((all: ConfigValues, file: string) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n\n return this._all;\n }\n\n public addFile(file: string): ConfigValues {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n\n this.files.push(file);\n }\n\n return this.values[file];\n }\n\n public addValue(file: string, key: string, value: string) {\n const values = this.addFile(file);\n\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n (values[key] as string[]).push(value);\n } else {\n values[key] = [values[key] as string, value];\n }\n\n this._all = undefined;\n }\n}\n\nexport function configListParser(text: string): ConfigList {\n const config = new ConfigList();\n\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n\n return config;\n}\n\nexport function configGetParser(text: string, key: string): ConfigGetResult {\n let value: string | null = null;\n const values: string[] = [];\n const scopes: Map<string, string[]> = new Map();\n\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n\n values.push((value = item.value));\n\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n\n scopes.get(item.file)!.push(value);\n }\n\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values,\n };\n}\n\nfunction configFilePath(filePath: string): string {\n return filePath.replace(/^(file):/, '');\n}\n\nfunction* configParser(text: string, requestedKey: string | null = null) {\n const lines = text.split('\\0');\n\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n\n let value = lines[i++];\n let key = requestedKey;\n\n if (value.includes('\\n')) {\n const line = splitOn(value, '\\n');\n key = line[0];\n value = line[1];\n }\n\n yield { file, key, value };\n }\n}\n","import type { ConfigGetResult, ConfigListSummary, SimpleGit } from '../../../typings';\nimport { configGetParser, configListParser } from '../responses/ConfigList';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { trailingFunctionArgument } from '../utils';\n\nexport enum GitConfigScope {\n system = 'system',\n global = 'global',\n local = 'local',\n worktree = 'worktree',\n}\n\nfunction asConfigScope<T extends GitConfigScope | undefined>(\n scope: GitConfigScope | unknown,\n fallback: T\n): GitConfigScope | T {\n if (typeof scope === 'string' && Object.hasOwn(GitConfigScope, scope)) {\n return scope as GitConfigScope;\n }\n return fallback;\n}\n\nfunction addConfigTask(\n key: string,\n value: string,\n append: boolean,\n scope: GitConfigScope\n): StringTask<string> {\n const commands: string[] = ['config', `--${scope}`];\n\n if (append) {\n commands.push('--add');\n }\n\n commands.push(key, value);\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): string {\n return text;\n },\n };\n}\n\nfunction getConfigTask(key: string, scope?: GitConfigScope): StringTask<ConfigGetResult> {\n const commands: string[] = ['config', '--null', '--show-origin', '--get-all', key];\n\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text) {\n return configGetParser(text, key);\n },\n };\n}\n\nfunction listConfigTask(scope?: GitConfigScope): StringTask<ConfigListSummary> {\n const commands = ['config', '--list', '--show-origin', '--null'];\n\n if (scope) {\n commands.push(`--${scope}`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string) {\n return configListParser(text);\n },\n };\n}\n\nexport default function (): Pick<SimpleGit, 'addConfig' | 'getConfig' | 'listConfig'> {\n return {\n addConfig(this: SimpleGitApi, key: string, value: string, ...rest: unknown[]) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], GitConfigScope.local)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n\n getConfig(this: SimpleGitApi, key: string, scope?: GitConfigScope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n\n listConfig(this: SimpleGitApi, ...rest: unknown[]) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], undefined)),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","export enum DiffNameStatus {\n ADDED = 'A',\n COPIED = 'C',\n DELETED = 'D',\n MODIFIED = 'M',\n RENAMED = 'R',\n CHANGED = 'T',\n UNMERGED = 'U',\n UNKNOWN = 'X',\n BROKEN = 'B',\n}\n\nconst diffNameStatus = new Set(Object.values(DiffNameStatus));\n\nexport function isDiffNameStatus(input: string): input is DiffNameStatus {\n return diffNameStatus.has(input as DiffNameStatus);\n}\n","import { GrepResult, SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport {\n asNumber,\n forEachLineWithContent,\n getTrailingOptions,\n NULL,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\n\nimport { configurationErrorTask } from './task';\n\nconst disallowedOptions = ['-h'];\n\nconst Query = Symbol('grepQuery');\n\nexport interface GitGrepQuery extends Iterable<string> {\n /** Adds one or more terms to be grouped as an \"and\" to any other terms */\n and(...and: string[]): this;\n\n /** Adds one or more search terms - git.grep will \"or\" this to other terms */\n param(...param: string[]): this;\n}\n\nclass GrepQuery implements GitGrepQuery {\n private [Query]: string[] = [];\n\n *[Symbol.iterator]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n\n and(...and: string[]) {\n and.length && this[Query].push('--and', '(', ...prefixedArray(and, '-e'), ')');\n return this;\n }\n\n param(...param: string[]) {\n this[Query].push(...prefixedArray(param, '-e'));\n return this;\n }\n}\n\n/**\n * Creates a new builder for a `git.grep` query with optional params\n */\nexport function grepQueryBuilder(...params: string[]): GitGrepQuery {\n return new GrepQuery().param(...params);\n}\n\nfunction parseGrep(grep: string): GrepResult {\n const paths: GrepResult['paths'] = new Set<string>();\n const results: GrepResult['results'] = {};\n\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview,\n });\n });\n\n return {\n paths,\n results,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'grep'> {\n return {\n grep(this: SimpleGitApi, searchTerm: string | GitGrepQuery) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n\n if (typeof searchTerm === 'string') {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n\n const commands = ['grep', '--null', '-n', '--full-name', ...options, ...searchTerm];\n\n return this._runTask(\n {\n commands,\n format: 'utf-8',\n parser(stdOut) {\n return parseGrep(stdOut);\n },\n },\n then\n );\n },\n };\n}\n","import type { Maybe, OptionFlags, Options } from '../types';\nimport { asStringArray } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nexport enum ResetMode {\n MIXED = 'mixed',\n SOFT = 'soft',\n HARD = 'hard',\n MERGE = 'merge',\n KEEP = 'keep',\n}\n\nconst validResetModes = asStringArray(Object.values(ResetMode));\n\nexport type ResetOptions = Options &\n OptionFlags<'-q' | '--quiet' | '--no-quiet' | '--pathspec-from-nul'> &\n OptionFlags<'--pathspec-from-file', string>;\n\nexport function resetTask(mode: Maybe<ResetMode>, customArgs: string[]) {\n const commands: string[] = ['reset'];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n\n return straightThroughStringTask(commands);\n}\n\nexport function getResetMode(mode: ResetMode | unknown): Maybe<ResetMode> {\n if (isValidResetMode(mode)) {\n return mode;\n }\n\n switch (typeof mode) {\n case 'string':\n case 'undefined':\n return ResetMode.SOFT;\n }\n\n return;\n}\n\nfunction isValidResetMode(mode: ResetMode | unknown): mode is ResetMode {\n return typeof mode === 'string' && validResetModes.includes(mode);\n}\n","import debug, { Debugger } from 'debug';\nimport {\n append,\n filterHasLength,\n filterString,\n filterType,\n NOOP,\n objectToString,\n remove,\n} from './utils';\nimport { Maybe } from './types';\n\ndebug.formatters.L = (value: any) => String(filterHasLength(value) ? value.length : '-');\ndebug.formatters.B = (value: Buffer) => {\n if (Buffer.isBuffer(value)) {\n return value.toString('utf8');\n }\n return objectToString(value);\n};\n\ntype OutputLoggingHandler = (message: string, ...args: any[]) => void;\n\nfunction createLog() {\n return debug('simple-git');\n}\n\nexport interface OutputLogger extends OutputLoggingHandler {\n readonly label: string;\n\n info: OutputLoggingHandler;\n step(nextStep?: string): OutputLogger;\n sibling(name: string): OutputLogger;\n}\n\nfunction prefixedLogger(\n to: Debugger,\n prefix: string,\n forward?: OutputLoggingHandler\n): OutputLoggingHandler {\n if (!prefix || !String(prefix).replace(/\\s*/, '')) {\n return !forward\n ? to\n : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\n\nfunction childLoggerName(\n name: Maybe<string>,\n childDebugger: Maybe<Debugger>,\n { namespace: parentNamespace }: Debugger\n): string {\n if (typeof name === 'string') {\n return name;\n }\n const childNamespace = (childDebugger && childDebugger.namespace) || '';\n\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n\n return childNamespace || parentNamespace;\n}\n\nexport function createLogger(\n label: string,\n verbose?: string | Debugger,\n initialStep?: string,\n infoDebugger = createLog()\n): OutputLogger {\n const labelPrefix = (label && `[${label}]`) || '';\n\n const spawned: OutputLogger[] = [];\n const debugDebugger: Maybe<Debugger> =\n typeof verbose === 'string' ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n\n return step(initialStep);\n\n function sibling(name: string, initial?: string) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n\n function step(phase?: string) {\n const stepPrefix = (phase && `[${phase}]`) || '';\n const debug = (debugDebugger && prefixedLogger(debugDebugger, stepPrefix)) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug);\n\n return Object.assign(debugDebugger ? debug : info, {\n label,\n sibling,\n info,\n step,\n });\n }\n}\n\n/**\n * The `GitLogger` is used by the main `SimpleGit` runner to handle logging\n * any warnings or errors.\n */\nexport class GitLogger {\n public error: OutputLoggingHandler;\n\n public warn: OutputLoggingHandler;\n\n constructor(private _out: Debugger = createLog()) {\n this.error = prefixedLogger(_out, '[ERROR]');\n this.warn = prefixedLogger(_out, '[WARN]');\n }\n\n silent(silence = false) {\n if (silence !== this._out.enabled) {\n return;\n }\n\n const { namespace } = this._out;\n const env = (process.env.DEBUG || '').split(',').filter((s) => !!s);\n const hasOn = env.includes(namespace);\n const hasOff = env.includes(`-${namespace}`);\n\n // enabling the log\n if (!silence) {\n if (hasOff) {\n remove(env, `-${namespace}`);\n } else {\n env.push(namespace);\n }\n } else {\n if (hasOn) {\n remove(env, namespace);\n } else {\n env.push(`-${namespace}`);\n }\n }\n\n debug.enable(env.join(','));\n }\n}\n","import { SimpleGitTask } from '../types';\nimport { GitError } from '../errors/git-error';\nimport { createLogger, OutputLogger } from '../git-logger';\n\ntype AnySimpleGitTask = SimpleGitTask<any>;\n\ntype TaskInProgress = {\n name: string;\n logger: OutputLogger;\n task: AnySimpleGitTask;\n};\n\nexport class TasksPendingQueue {\n private _queue: Map<AnySimpleGitTask, TaskInProgress> = new Map();\n\n constructor(private logLabel = 'GitExecutor') {}\n\n private withProgress(task: AnySimpleGitTask) {\n return this._queue.get(task);\n }\n\n private createProgress(task: AnySimpleGitTask): TaskInProgress {\n const name = TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n\n return {\n task,\n logger,\n name,\n };\n }\n\n push(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.createProgress(task);\n progress.logger('Adding task to the queue, commands = %o', task.commands);\n\n this._queue.set(task, progress);\n\n return progress;\n }\n\n fatal(err: GitError) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n\n this.complete(task);\n }\n\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n\n complete(task: AnySimpleGitTask) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n\n attempt(task: AnySimpleGitTask): TaskInProgress {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(undefined, 'TasksPendingQueue: attempt called for an unknown task');\n }\n progress.logger('Starting task');\n\n return progress;\n }\n\n static getName(name = 'empty') {\n return `task:${name}:${++TasksPendingQueue.counter}`;\n }\n\n private static counter = 0;\n}\n","import { spawn, SpawnOptions } from 'child_process';\nimport { GitError } from '../errors/git-error';\nimport { OutputLogger } from '../git-logger';\nimport { PluginStore } from '../plugins';\nimport { EmptyTask, isBufferTask, isEmptyTask } from '../tasks/task';\nimport {\n GitExecutorResult,\n Maybe,\n outputHandler,\n RunnableTask,\n SimpleGitExecutor,\n SimpleGitTask,\n} from '../types';\nimport { callTaskParser, first, GitOutputStreams, objectToString } from '../utils';\nimport { Scheduler } from './scheduler';\nimport { TasksPendingQueue } from './tasks-pending-queue';\n\nexport class GitExecutorChain implements SimpleGitExecutor {\n private _chain: Promise<any> = Promise.resolve();\n private _queue = new TasksPendingQueue();\n private _cwd: string | undefined;\n\n public get cwd() {\n return this._cwd || this._executor.cwd;\n }\n\n public set cwd(cwd: string) {\n this._cwd = cwd;\n }\n\n public get env() {\n return this._executor.env;\n }\n\n public get outputHandler() {\n return this._executor.outputHandler;\n }\n\n constructor(\n private _executor: SimpleGitExecutor,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n public chain() {\n return this;\n }\n\n public push<R>(task: SimpleGitTask<R>): Promise<R> {\n this._queue.push(task);\n\n return (this._chain = this._chain.then(() => this.attemptTask(task)));\n }\n\n private async attemptTask<R>(task: SimpleGitTask<R>): Promise<void | R> {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n\n try {\n const { logger } = this._queue.attempt(task);\n return (await (isEmptyTask(task)\n ? this.attemptEmptyTask(task, logger)\n : this.attemptRemoteTask(task, logger))) as R;\n } catch (e) {\n throw this.onFatalException(task, e as Error);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n\n private onFatalException<R>(task: SimpleGitTask<R>, e: Error) {\n const gitError =\n e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n\n return gitError;\n }\n\n private async attemptRemoteTask<R>(task: RunnableTask<R>, logger: OutputLogger) {\n const binary = this._plugins.exec('spawn.binary', '', pluginContext(task, task.commands));\n const args = this._plugins.exec(\n 'spawn.args',\n [...task.commands],\n pluginContext(task, task.commands)\n );\n\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step('SPAWN')\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step('HANDLE'));\n\n logger(`passing response to task's parser as a %s`, task.format);\n\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n\n private async attemptEmptyTask(task: EmptyTask, logger: OutputLogger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n\n private handleTaskData<R>(\n task: SimpleGitTask<R>,\n args: string[],\n result: GitExecutorResult,\n logger: OutputLogger\n ): Promise<GitOutputStreams> {\n const { exitCode, rejection, stdOut, stdErr } = result;\n\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n\n const { error } = this._plugins.exec(\n 'task.error',\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result,\n }\n );\n\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n\n private async gitResponse<R>(\n task: SimpleGitTask<R>,\n command: string,\n args: string[],\n outputHandler: Maybe<outputHandler>,\n logger: OutputLogger\n ): Promise<GitExecutorResult> {\n const outputLogger = logger.sibling('output');\n const spawnOptions: SpawnOptions = this._plugins.exec(\n 'spawn.options',\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true,\n },\n pluginContext(task, task.commands)\n );\n\n return new Promise((done) => {\n const stdOut: Buffer[] = [];\n const stdErr: Buffer[] = [];\n\n logger.info(`%s %o`, command, args);\n logger('%O', spawnOptions);\n\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection,\n });\n }\n\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n const spawned = spawn(command, args, spawnOptions);\n\n spawned.stdout!.on(\n 'data',\n onDataReceived(stdOut, 'stdOut', logger, outputLogger.step('stdOut'))\n );\n spawned.stderr!.on(\n 'data',\n onDataReceived(stdErr, 'stdErr', logger, outputLogger.step('stdErr'))\n );\n\n spawned.on('error', onErrorReceived(stdErr, logger));\n\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout!, spawned.stderr!, [...args]);\n }\n\n this._plugins.exec('spawn.after', undefined, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode: number, reason?: Error) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason,\n });\n },\n kill(reason: Error) {\n if (spawned.killed) {\n return;\n }\n\n rejection = reason;\n spawned.kill('SIGINT');\n },\n });\n });\n }\n\n private _beforeSpawn<R>(task: SimpleGitTask<R>, args: string[]) {\n let rejection: Maybe<Error>;\n this._plugins.exec('spawn.before', undefined, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n },\n });\n\n return rejection;\n }\n}\n\nfunction pluginContext<R>(task: SimpleGitTask<R>, commands: string[]) {\n return {\n method: first(task.commands) || '',\n commands,\n };\n}\n\nfunction onErrorReceived(target: Buffer[], logger: OutputLogger) {\n return (err: Error) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), 'ascii'));\n };\n}\n\nfunction onDataReceived(\n target: Buffer[],\n name: string,\n logger: OutputLogger,\n output: OutputLogger\n) {\n return (buffer: Buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\n","import type { PluginStore } from '../plugins';\nimport type { GitExecutorEnv, outputHandler, SimpleGitExecutor, SimpleGitTask } from '../types';\n\nimport { GitExecutorChain } from './git-executor-chain';\nimport { Scheduler } from './scheduler';\n\nexport class GitExecutor implements SimpleGitExecutor {\n private _chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n\n public env: GitExecutorEnv;\n public outputHandler?: outputHandler;\n\n constructor(\n public cwd: string,\n private _scheduler: Scheduler,\n private _plugins: PluginStore\n ) {}\n\n chain(): SimpleGitExecutor {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n\n push<R>(task: SimpleGitTask<R>): Promise<R> {\n return this._chain.push(task);\n }\n}\n","import { GitError } from './errors/git-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport { NOOP } from './utils';\n\nexport function taskCallback<R>(\n task: SimpleGitTask<R>,\n response: Promise<R>,\n callback: SimpleGitTaskCallback<R> = NOOP\n) {\n const onSuccess = (data: R) => {\n callback(null, data);\n };\n\n const onError = (err: GitError | GitResponseError) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n undefined as any\n );\n }\n };\n\n response.then(onSuccess, onError);\n}\n\nfunction addDeprecationNoticeToError(err: GitResponseError) {\n let log = (name: string) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n\n function descriptorReducer(all: PropertyDescriptorMap, name: string): typeof all {\n if (name in err) {\n return all;\n }\n\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n },\n };\n\n return all;\n }\n}\n","import { folderExists } from '../utils';\nimport { SimpleGitExecutor } from '../types';\nimport { adhocExecTask } from './task';\n\nexport function changeWorkingDirectoryTask(directory: string, root?: SimpleGitExecutor) {\n return adhocExecTask((instance: SimpleGitExecutor) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n\n return ((root || instance).cwd = directory);\n });\n}\n","import type { SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, remove, trailingFunctionArgument } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nfunction checkoutTask(args: string[]) {\n const commands = ['checkout', ...args];\n if (commands[1] === '-b' && commands.includes('-B')) {\n commands[1] = remove(commands, '-B');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport default function (): Pick<SimpleGit, 'checkout' | 'checkoutBranch' | 'checkoutLocalBranch'> {\n return {\n checkout(this: SimpleGitApi) {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutBranch(this: SimpleGitApi, branchName, startPoint) {\n return this._runTask(\n checkoutTask(['-b', branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n\n checkoutLocalBranch(this: SimpleGitApi, branchName) {\n return this._runTask(\n checkoutTask(['-b', branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import type { SimpleGitApi } from '../simple-git-api';\nimport type { SimpleGit } from '../../../typings';\nimport { asCamelCase, asNumber, LineParser, parseStringResponse } from '../utils';\n\nexport interface CountObjectsResult {\n count: number;\n size: number;\n inPack: number;\n packs: number;\n sizePack: number;\n prunePackable: number;\n garbage: number;\n sizeGarbage: number;\n}\n\nfunction countObjectsResponse(): CountObjectsResult {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0,\n };\n}\n\nconst parser: LineParser<CountObjectsResult> = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property as keyof typeof result] = asNumber(value);\n }\n }\n);\n\nexport default function (): Pick<SimpleGit, 'countObjects'> {\n return {\n countObjects(this: SimpleGitApi) {\n return this._runTask({\n commands: ['count-objects', '--verbose'],\n format: 'utf-8',\n parser(stdOut: string) {\n return parseStringResponse(countObjectsResponse(), [parser], stdOut);\n },\n });\n },\n };\n}\n","import { CommitResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<CommitResult>[] = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split('<');\n const email = parts.pop();\n\n if (!email || !email.includes('@')) {\n return;\n }\n\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join('<').trim(),\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === '-') {\n result.summary.deletions = count;\n } else if (direction === '+') {\n result.summary.insertions = count;\n }\n }\n ),\n];\n\nexport function parseCommitResult(stdOut: string): CommitResult {\n const result: CommitResult = {\n author: null,\n branch: '',\n commit: '',\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0,\n },\n };\n return parseStringResponse(result, parsers, stdOut);\n}\n","import type { CommitResult, SimpleGit } from '../../../typings';\nimport type { SimpleGitApi } from '../simple-git-api';\nimport type { StringTask } from '../types';\nimport { parseCommitResult } from '../parsers/parse-commit';\nimport {\n asArray,\n asStringArray,\n filterArray,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n prefixedArray,\n trailingFunctionArgument,\n} from '../utils';\nimport { configurationErrorTask } from './task';\n\nexport function commitTask(\n message: string[],\n files: string[],\n customArgs: string[]\n): StringTask<CommitResult> {\n const commands: string[] = [\n '-c',\n 'core.abbrev=40',\n 'commit',\n ...prefixedArray(message, '-m'),\n ...files,\n ...customArgs,\n ];\n\n return {\n commands,\n format: 'utf-8',\n parser: parseCommitResult,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'commit'> {\n return {\n commit(this: SimpleGitApi, message: string | string[], ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const task =\n rejectDeprecatedSignatures(message) ||\n commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true),\n ]\n );\n\n return this._runTask(task, next);\n },\n };\n\n function rejectDeprecatedSignatures(message?: unknown) {\n return (\n !filterStringOrStringArray(message) &&\n configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n )\n );\n }\n}\n","import { Response, SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { trailingFunctionArgument } from '../utils';\nimport { straightThroughStringTask } from './task';\n\nexport default function (): Pick<SimpleGit, 'firstCommit'> {\n return {\n firstCommit(this: SimpleGitApi): Response<string> {\n return this._runTask(\n straightThroughStringTask(['rev-list', '--max-parents=0', 'HEAD'], true),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import { straightThroughStringTask } from './task';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.hashObject`\n */\nexport function hashObjectTask(filePath: string, write: boolean): StringTask<string> {\n const commands = ['hash-object', filePath];\n if (write) {\n commands.push('-w');\n }\n\n return straightThroughStringTask(commands, true);\n}\n","import { InitResult } from '../../../typings';\n\nexport class InitSummary implements InitResult {\n constructor(\n public readonly bare: boolean,\n public readonly path: string,\n public readonly existing: boolean,\n public readonly gitDir: string\n ) {}\n}\n\nconst initResponseRegex = /^Init.+ repository in (.+)$/;\nconst reInitResponseRegex = /^Rein.+ in (.+)$/;\n\nexport function parseInit(bare: boolean, path: string, text: string) {\n const response = String(text).trim();\n let result;\n\n if ((result = initResponseRegex.exec(response))) {\n return new InitSummary(bare, path, false, result[1]);\n }\n\n if ((result = reInitResponseRegex.exec(response))) {\n return new InitSummary(bare, path, true, result[1]);\n }\n\n let gitDir = '';\n const tokens = response.split(' ');\n while (tokens.length) {\n const token = tokens.shift();\n if (token === 'in') {\n gitDir = tokens.join(' ');\n break;\n }\n }\n\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\n","import { InitResult } from '../../../typings';\nimport { parseInit } from '../responses/InitSummary';\nimport { StringTask } from '../types';\n\nconst bareCommand = '--bare';\n\nfunction hasBareCommand(command: string[]) {\n return command.includes(bareCommand);\n}\n\nexport function initTask(bare = false, path: string, customArgs: string[]): StringTask<InitResult> {\n const commands = ['init', ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(text: string): InitResult {\n return parseInit(commands.includes('--bare'), path, text);\n },\n };\n}\n","export enum LogFormat {\n NONE = '',\n STAT = '--stat',\n NUM_STAT = '--numstat',\n NAME_ONLY = '--name-only',\n NAME_STATUS = '--name-status',\n}\n\nconst logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n\nexport function logFormatFromCommand(customArgs: string[]) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}` as LogFormat;\n }\n }\n\n return LogFormat.NONE;\n}\n\nexport function isLogFormat(customArg: string | unknown) {\n return logFormatRegex.test(customArg as string);\n}\n","import { DiffResult, DiffResultBinaryFile, DiffResultTextFile } from '../../../typings';\n\n/***\n * The DiffSummary is returned as a response to getting `git().status()`\n */\nexport class DiffSummary implements DiffResult {\n changed = 0;\n deletions = 0;\n insertions = 0;\n\n files: Array<DiffResultTextFile | DiffResultBinaryFile> = [];\n}\n","import { DiffResult } from '../../../typings';\nimport { LogFormat } from '../args/log-format';\nimport { DiffSummary } from '../responses/DiffSummary';\nimport { isDiffNameStatus } from '../tasks/diff-name-status';\nimport { asNumber, LineParser, orVoid, parseStringResponse } from '../utils';\n\nconst statParser = [\n new LineParser<DiffResult>(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = '']) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, '').length,\n deletions: alterations.replace(/[^-]/g, '').length,\n binary: false,\n });\n }\n ),\n new LineParser<DiffResult>(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true,\n });\n }\n ),\n new LineParser<DiffResult>(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n ),\n];\n\nconst numStatParser = [\n new LineParser<DiffResult>(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false,\n });\n }\n ),\n new LineParser<DiffResult>(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true,\n });\n }),\n];\n\nconst nameOnlyParser = [\n new LineParser<DiffResult>(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n });\n }),\n];\n\nconst nameStatusParser = [\n new LineParser<DiffResult>(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity),\n });\n }\n ),\n];\n\nconst diffSummaryParsers: Record<LogFormat, LineParser<DiffResult>[]> = {\n [LogFormat.NONE]: statParser,\n [LogFormat.STAT]: statParser,\n [LogFormat.NUM_STAT]: numStatParser,\n [LogFormat.NAME_STATUS]: nameStatusParser,\n [LogFormat.NAME_ONLY]: nameOnlyParser,\n};\n\nexport function getDiffParser(format = LogFormat.NONE) {\n const parser = diffSummaryParsers[format];\n\n return (stdOut: string) => parseStringResponse(new DiffSummary(), parser, stdOut, false);\n}\n","import { ListLogLine, LogResult } from '../../../typings';\nimport { toLinesWithContent } from '../utils';\nimport { getDiffParser } from './parse-diff-summary';\nimport { LogFormat } from '../args/log-format';\n\nexport const START_BOUNDARY = '\u00F2\u00F2\u00F2\u00F2\u00F2\u00F2 ';\n\nexport const COMMIT_BOUNDARY = ' \u00F2\u00F2';\n\nexport const SPLITTER = ' \u00F2 ';\n\nconst defaultFieldNames = ['hash', 'date', 'message', 'refs', 'author_name', 'author_email'];\n\nfunction lineBuilder(tokens: string[], fields: string[]): any {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || '';\n return line;\n },\n Object.create({ diff: null }) as any\n );\n}\n\nexport function createListLogSummaryParser<T = any>(\n splitter = SPLITTER,\n fields = defaultFieldNames,\n logFormat = LogFormat.NONE\n) {\n const parseDiffResult = getDiffParser(logFormat);\n\n return function (stdOut: string): LogResult<T> {\n const all: ReadonlyArray<T & ListLogLine> = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function (item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine: T & ListLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n\n return listLogLine;\n });\n\n return {\n all,\n latest: (all.length && all[0]) || null,\n total: all.length,\n };\n };\n}\n","import { StringTask } from '../types';\nimport { DiffResult } from '../../../typings';\nimport { isLogFormat, LogFormat, logFormatFromCommand } from '../args/log-format';\nimport { getDiffParser } from '../parsers/parse-diff-summary';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function diffSummaryTask(customArgs: string[]): StringTask<DiffResult> | EmptyTask {\n let logFormat = logFormatFromCommand(customArgs);\n\n const commands = ['diff'];\n\n if (logFormat === LogFormat.NONE) {\n logFormat = LogFormat.STAT;\n commands.push('--stat=4096');\n }\n\n commands.push(...customArgs);\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser: getDiffParser(logFormat),\n }\n );\n}\n\nexport function validateLogFormatConfig(customArgs: unknown[]): EmptyTask | void {\n const flags = customArgs.filter(isLogFormat);\n\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(',')}`\n );\n }\n\n if (flags.length && customArgs.includes('-z')) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\n","import type { LogResult, Options, SimpleGit } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport { pathspec } from '../args/pathspec';\nimport {\n COMMIT_BOUNDARY,\n createListLogSummaryParser,\n SPLITTER,\n START_BOUNDARY,\n} from '../parsers/parse-list-log-summary';\nimport {\n appendTaskOptions,\n asStringArray,\n filterArray,\n filterPlainObject,\n filterString,\n filterType,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} from '../utils';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { configurationErrorTask } from './task';\nimport { validateLogFormatConfig } from './diff';\nimport { StringTask } from '../types';\n\nenum excludeOptions {\n '--pretty',\n 'max-count',\n 'maxCount',\n 'n',\n 'file',\n 'format',\n 'from',\n 'to',\n 'splitter',\n 'symmetric',\n 'mailMap',\n 'multiLine',\n 'strictDate',\n}\n\nexport interface DefaultLogFields {\n hash: string;\n date: string;\n message: string;\n refs: string;\n body: string;\n author_name: string;\n author_email: string;\n}\n\nexport type LogOptions<T = DefaultLogFields> = {\n file?: string;\n format?: T;\n from?: string;\n mailMap?: boolean;\n maxCount?: number;\n multiLine?: boolean;\n splitter?: string;\n strictDate?: boolean;\n symmetric?: boolean;\n to?: string;\n};\n\ninterface ParsedLogOptions {\n fields: string[];\n splitter: string;\n commands: string[];\n}\n\nfunction prettyFormat(\n format: Record<string, string | unknown>,\n splitter: string\n): [string[], string] {\n const fields: string[] = [];\n const formatStr: string[] = [];\n\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n\n return [fields, formatStr.join(splitter)];\n}\n\nfunction userOptions<T extends Options>(input: T): Options {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {} as Options);\n}\n\nexport function parseLogOptions<T extends Options>(\n opt: Options | LogOptions<T> = {},\n customArgs: string[] = []\n): ParsedLogOptions {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format)\n ? opt.format\n : {\n hash: '%H',\n date: opt.strictDate === false ? '%ai' : '%aI',\n message: '%s',\n refs: '%D',\n body: opt.multiLine ? '%B' : '%b',\n author_name: opt.mailMap !== false ? '%aN' : '%an',\n author_email: opt.mailMap !== false ? '%aE' : '%ae',\n };\n\n const [fields, formatStr] = prettyFormat(format, splitter);\n\n const suffix: string[] = [];\n const command: string[] = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs,\n ];\n\n const maxCount: number | undefined = (opt as any).n || (opt as any)['max-count'] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? '...' : '..';\n suffix.push(`${opt.from || ''}${rangeOperator}${opt.to || ''}`);\n }\n\n if (filterString(opt.file)) {\n command.push('--follow', pathspec(opt.file));\n }\n\n appendTaskOptions(userOptions(opt as Options), command);\n\n return {\n fields,\n splitter,\n commands: [...command, ...suffix],\n };\n}\n\nexport function logTask<T>(\n splitter: string,\n fields: string[],\n customArgs: string[]\n): StringTask<LogResult<T>> {\n const parser = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n\n return {\n commands: ['log', ...customArgs],\n format: 'utf-8',\n parser,\n };\n}\n\nexport default function (): Pick<SimpleGit, 'log'> {\n return {\n log<T extends Options>(this: SimpleGitApi, ...rest: unknown[]) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions<T>(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task =\n rejectDeprecatedSignatures(...rest) ||\n validateLogFormatConfig(options.commands) ||\n createLogTask(options);\n\n return this._runTask(task, next);\n },\n };\n\n function createLogTask(options: ParsedLogOptions) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n\n function rejectDeprecatedSignatures(from?: unknown, to?: unknown) {\n return (\n filterString(from) &&\n filterString(to) &&\n configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n )\n );\n }\n}\n","import {\n MergeConflict,\n MergeConflictDeletion,\n MergeDetail,\n MergeResultStatus,\n} from '../../../typings';\n\nexport class MergeSummaryConflict implements MergeConflict {\n constructor(\n public readonly reason: string,\n public readonly file: string | null = null,\n public readonly meta?: MergeConflictDeletion\n ) {}\n\n toString() {\n return `${this.file}:${this.reason}`;\n }\n}\n\nexport class MergeSummaryDetail implements MergeDetail {\n public conflicts: MergeConflict[] = [];\n public merges: string[] = [];\n public result: MergeResultStatus = 'success';\n\n get failed() {\n return this.conflicts.length > 0;\n }\n\n get reason() {\n return this.result;\n }\n\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(', ')}`;\n }\n\n return 'OK';\n }\n}\n","import {\n PullDetailFileChanges,\n PullDetailSummary,\n PullFailedResult,\n PullResult,\n} from '../../../typings';\n\nexport class PullSummary implements PullResult {\n public remoteMessages = {\n all: [],\n };\n public created = [];\n public deleted: string[] = [];\n public files: string[] = [];\n public deletions: PullDetailFileChanges = {};\n public insertions: PullDetailFileChanges = {};\n public summary: PullDetailSummary = {\n changes: 0,\n deletions: 0,\n insertions: 0,\n };\n}\n\nexport class PullFailedSummary implements PullFailedResult {\n remote = '';\n hash = {\n local: '',\n remote: '',\n };\n branch = {\n local: '',\n remote: '',\n };\n message = '';\n\n toString() {\n return this.message;\n }\n}\n","import {\n RemoteMessageResult,\n RemoteMessages,\n RemoteMessagesObjectEnumeration,\n} from '../../../typings';\nimport { asNumber, RemoteLineParser } from '../utils';\n\nfunction objectEnumerationResult<T extends RemoteMessages = RemoteMessages>(\n remoteMessages: T\n): RemoteMessagesObjectEnumeration {\n return (remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 },\n });\n}\n\nfunction asObjectCount(source: string) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n\n return {\n count: asNumber((count && count[1]) || '0'),\n delta: asNumber((delta && delta[1]) || '0'),\n };\n}\n\nexport const remoteMessagesObjectParsers: RemoteLineParser<RemoteMessageResult<RemoteMessages>>[] =\n [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n ),\n ];\n","import { PushResultRemoteMessages, RemoteMessageResult, RemoteMessages } from '../../../typings';\nimport { asNumber, parseStringResponse, RemoteLineParser } from '../utils';\nimport { remoteMessagesObjectParsers } from './parse-remote-objects';\n\nconst parsers: RemoteLineParser<RemoteMessageResult<PushResultRemoteMessages | RemoteMessages>>[] =\n [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n (result.remoteMessages as PushResultRemoteMessages).pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n (result.remoteMessages as PushResultRemoteMessages).vulnerabilities = {\n count: asNumber(count),\n summary,\n url,\n };\n }\n ),\n ];\n\nexport function parseRemoteMessages<T extends RemoteMessages = RemoteMessages>(\n _stdOut: string,\n stdErr: string\n): RemoteMessageResult {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() as T }, parsers, stdErr);\n}\n\nexport class RemoteMessageSummary implements RemoteMessages {\n public readonly all: string[] = [];\n}\n","import { PullDetail, PullFailedResult, PullResult, RemoteMessages } from '../../../typings';\nimport { PullFailedSummary, PullSummary } from '../responses/PullSummary';\nimport { TaskParser } from '../types';\nimport { append, LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nconst FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\nconst SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\nconst ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n\nconst parsers: LineParser<PullResult>[] = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== undefined || deletions !== undefined) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === 'create' ? result.created : result.deleted, file);\n }),\n];\n\nconst errorParsers: LineParser<PullFailedResult>[] = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n ),\n];\n\nexport const parsePullDetail: TaskParser<string, PullDetail> = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers, [stdOut, stdErr]);\n};\n\nexport const parsePullResult: TaskParser<string, PullResult> = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages<RemoteMessages>(stdOut, stdErr)\n );\n};\n\nexport function parsePullErrorResult(stdOut: string, stdErr: string) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n\n return pullError.message && pullError;\n}\n","import { MergeDetail, MergeResult } from '../../../typings';\nimport { MergeSummaryConflict, MergeSummaryDetail } from '../responses/MergeSummary';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parsePullResult } from './parse-pull';\n\nconst parsers: LineParser<MergeDetail>[] = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n }),\n];\n\n/**\n * Parse the complete response from `git.merge`\n */\nexport const parseMergeResult: TaskParser<string, MergeResult> = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n};\n\n/**\n * Parse the merge specific detail (ie: not the content also available in the pull detail) from `git.mnerge`\n * @param stdOut\n */\nexport const parseMergeDetail: TaskParser<string, MergeDetail> = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers, stdOut);\n};\n","import { MergeResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parseMergeResult } from '../parsers/parse-merge';\nimport { StringTask } from '../types';\nimport { configurationErrorTask, EmptyTask } from './task';\n\nexport function mergeTask(customArgs: string[]): EmptyTask | StringTask<MergeResult> {\n if (!customArgs.length) {\n return configurationErrorTask('Git.merge requires at least one option');\n }\n\n return {\n commands: ['merge', ...customArgs],\n format: 'utf-8',\n parser(stdOut, stdErr): MergeResult {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n\n return merge;\n },\n };\n}\n","import {\n PushDetail,\n PushResult,\n PushResultPushedItem,\n PushResultRemoteMessages,\n} from '../../../typings';\nimport { TaskParser } from '../types';\nimport { LineParser, parseStringResponse } from '../utils';\nimport { parseRemoteMessages } from './parse-remote-messages';\n\nfunction pushResultPushedItem(local: string, remote: string, status: string): PushResultPushedItem {\n const deleted = status.includes('deleted');\n const tag = status.includes('tag') || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes('new');\n\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote,\n };\n}\n\nconst parsers: LineParser<PushDetail>[] = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...(result.ref || {}),\n local,\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...(result.branch || {}),\n local,\n remote,\n remoteName,\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote,\n },\n hash: {\n from,\n to,\n },\n };\n }\n ),\n];\n\nexport const parsePushResult: TaskParser<string, PushResult> = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages<PushResultRemoteMessages>(stdOut, stdErr);\n\n return {\n ...pushDetail,\n ...responseDetail,\n };\n};\n\nexport const parsePushDetail: TaskParser<string, PushDetail> = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers, [stdOut, stdErr]);\n};\n","import { PushResult } from '../../../typings';\nimport { parsePushResult as parser } from '../parsers/parse-push';\nimport { StringTask } from '../types';\nimport { append, remove } from '../utils';\n\ntype PushRef = { remote?: string; branch?: string };\n\nexport function pushTagsTask(ref: PushRef = {}, customArgs: string[]): StringTask<PushResult> {\n append(customArgs, '--tags');\n return pushTask(ref, customArgs);\n}\n\nexport function pushTask(ref: PushRef = {}, customArgs: string[]): StringTask<PushResult> {\n const commands = ['push', ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n\n remove(commands, '-v');\n append(commands, '--verbose');\n append(commands, '--porcelain');\n\n return {\n commands,\n format: 'utf-8',\n parser,\n };\n}\n","import { SimpleGit } from '../../../typings';\nimport { SimpleGitApi } from '../simple-git-api';\nimport { getTrailingOptions, trailingFunctionArgument } from '../utils';\nimport { straightThroughBufferTask, straightThroughStringTask } from './task';\n\nexport default function (): Pick<SimpleGit, 'showBuffer' | 'show'> {\n return {\n showBuffer(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n if (!commands.includes('--binary')) {\n commands.splice(1, 0, '--binary');\n }\n\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n\n show(this: SimpleGitApi) {\n const commands = ['show', ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n };\n}\n","import { FileStatusResult } from '../../../typings';\n\nexport const fromPathRegex = /^(.+)\\0(.+)$/;\n\nexport class FileStatusSummary implements FileStatusResult {\n public readonly from: string | undefined;\n\n constructor(\n public path: string,\n public index: string,\n public working_dir: string\n ) {\n if (index === 'R' || working_dir === 'R') {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || '';\n this.path = detail[1] || '';\n }\n }\n}\n","import { StatusResult } from '../../../typings';\nimport { append, filterString, filterType, NULL } from '../utils';\nimport { FileStatusSummary } from './FileStatusSummary';\n\ntype StatusLineParser = (result: StatusResult, file: string) => void;\n\nexport class StatusSummary implements StatusResult {\n public not_added = [];\n public conflicted = [];\n public created = [];\n public deleted = [];\n public ignored = undefined;\n public modified = [];\n public renamed = [];\n public files = [];\n public staged = [];\n public ahead = 0;\n public behind = 0;\n public current = null;\n public tracking = null;\n public detached = false;\n\n public isClean = () => {\n return !this.files.length;\n };\n}\n\nenum PorcelainFileStatus {\n ADDED = 'A',\n DELETED = 'D',\n MODIFIED = 'M',\n RENAMED = 'R',\n COPIED = 'C',\n UNMERGED = 'U',\n UNTRACKED = '?',\n IGNORED = '!',\n NONE = ' ',\n}\n\nfunction renamedFile(line: string) {\n const [to, from] = line.split(NULL);\n\n return {\n from: from || to,\n to,\n };\n}\n\nfunction parser(\n indexX: PorcelainFileStatus,\n indexY: PorcelainFileStatus,\n handler: StatusLineParser\n): [string, StatusLineParser] {\n return [`${indexX}${indexY}`, handler];\n}\n\nfunction conflicts(indexX: PorcelainFileStatus, ...indexY: PorcelainFileStatus[]) {\n return indexY.map((y) => parser(indexX, y, (result, file) => append(result.conflicted, file)));\n}\n\nconst parsers: Map<string, StatusLineParser> = new Map([\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.ADDED, (result, file) =>\n append(result.created, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.DELETED, (result, file) =>\n append(result.deleted, file)\n ),\n parser(PorcelainFileStatus.NONE, PorcelainFileStatus.MODIFIED, (result, file) =>\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.created, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.MODIFIED,\n (result, file) =>\n append(result.created, file) &&\n append(result.staged, file) &&\n append(result.modified, file)\n ),\n\n parser(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.deleted, file) && append(result.staged, file)\n ),\n\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.NONE,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser(\n PorcelainFileStatus.MODIFIED,\n PorcelainFileStatus.MODIFIED,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.NONE, (result, file) => {\n append(result.renamed, renamedFile(file));\n }),\n parser(PorcelainFileStatus.RENAMED, PorcelainFileStatus.MODIFIED, (result, file) => {\n const renamed = renamedFile(file);\n append(result.renamed, renamed);\n append(result.modified, renamed.to);\n }),\n parser(PorcelainFileStatus.IGNORED, PorcelainFileStatus.IGNORED, (_result, _file) => {\n append((_result.ignored = _result.ignored || []), _file);\n }),\n\n parser(PorcelainFileStatus.UNTRACKED, PorcelainFileStatus.UNTRACKED, (result, file) =>\n append(result.not_added, file)\n ),\n\n ...conflicts(PorcelainFileStatus.ADDED, PorcelainFileStatus.ADDED, PorcelainFileStatus.UNMERGED),\n ...conflicts(\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n ...conflicts(\n PorcelainFileStatus.UNMERGED,\n PorcelainFileStatus.ADDED,\n PorcelainFileStatus.DELETED,\n PorcelainFileStatus.UNMERGED\n ),\n\n [\n '##',\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n\n let regexResult = aheadReg.exec(line);\n result.ahead = (regexResult && +regexResult[1]) || 0;\n\n regexResult = behindReg.exec(line);\n result.behind = (regexResult && +regexResult[1]) || 0;\n\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n\n result.detached = /\\(no branch\\)/.test(line);\n },\n ],\n]);\n\nexport const parseStatusSummary = function (text: string): StatusResult {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n\n if (!line) {\n continue;\n }\n\n if (line.charAt(0) === PorcelainFileStatus.RENAMED) {\n line += NULL + (lines[i++] || '');\n }\n\n splitLine(status, line);\n }\n\n return status;\n};\n\nfunction splitLine(result: StatusResult, lineStr: string) {\n const trimmed = lineStr.trim();\n switch (' ') {\n case trimmed.charAt(2):\n return data(trimmed.charAt(0), trimmed.charAt(1), trimmed.substr(3));\n case trimmed.charAt(1):\n return data(PorcelainFileStatus.NONE, trimmed.charAt(0), trimmed.substr(2));\n default:\n return;\n }\n\n function data(index: string, workingDir: string, path: string) {\n const raw = `${index}${workingDir}`;\n const handler = parsers.get(raw);\n\n if (handler) {\n handler(result, path);\n }\n\n if (raw !== '##' && raw !== '!!') {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\n","import { StatusResult } from '../../../typings';\nimport { parseStatusSummary } from '../responses/StatusSummary';\nimport { StringTask } from '../types';\n\nconst ignoredOptions = ['--null', '-z'];\n\nexport function statusTask(customArgs: string[]): StringTask<StatusResult> {\n const commands = [\n 'status',\n '--porcelain',\n '-b',\n '-u',\n '--null',\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg)),\n ];\n\n return {\n format: 'utf-8',\n commands,\n parser(text: string) {\n return parseStatusSummary(text);\n },\n };\n}\n","import type { SimpleGitApi } from '../simple-git-api';\nimport type { SimpleGit } from '../../../typings';\nimport { asNumber, ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nexport interface VersionResult {\n major: number;\n minor: number;\n patch: number | string;\n agent: string;\n installed: boolean;\n}\n\nconst NOT_INSTALLED = 'installed=false';\n\nfunction versionResponse(\n major = 0,\n minor = 0,\n patch: string | number = 0,\n agent = '',\n installed = true\n): VersionResult {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed,\n },\n 'toString',\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false,\n }\n );\n}\n\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, '', false);\n}\n\nexport default function (): Pick<SimpleGit, 'version'> {\n return {\n version(this: SimpleGitApi) {\n return this._runTask({\n commands: ['--version'],\n format: 'utf-8',\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === ExitCodes.NOT_FOUND) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n\n fail(error);\n },\n });\n },\n };\n}\n\nconst parsers: LineParser<VersionResult>[] = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = '']) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n ),\n];\n\nfunction versionParser(stdOut: string) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers, stdOut);\n}\n","import { SimpleGitBase } from '../../typings';\nimport { taskCallback } from './task-callback';\nimport { changeWorkingDirectoryTask } from './tasks/change-working-directory';\nimport checkout from './tasks/checkout';\nimport countObjects from './tasks/count-objects';\nimport commit from './tasks/commit';\nimport config from './tasks/config';\nimport firstCommit from './tasks/first-commit';\nimport grep from './tasks/grep';\nimport { hashObjectTask } from './tasks/hash-object';\nimport { initTask } from './tasks/init';\nimport log from './tasks/log';\nimport { mergeTask } from './tasks/merge';\nimport { pushTask } from './tasks/push';\nimport show from './tasks/show';\nimport { statusTask } from './tasks/status';\nimport { configurationErrorTask, straightThroughStringTask } from './tasks/task';\nimport version from './tasks/version';\nimport { outputHandler, SimpleGitExecutor, SimpleGitTask, SimpleGitTaskCallback } from './types';\nimport {\n asArray,\n filterString,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n} from './utils';\n\nexport class SimpleGitApi implements SimpleGitBase {\n constructor(private _executor: SimpleGitExecutor) {}\n\n protected _runTask<T>(task: SimpleGitTask<T>, then?: SimpleGitTaskCallback<T>) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n\n if (then) {\n taskCallback(task, promise, then);\n }\n\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain },\n });\n }\n\n add(files: string | string[]) {\n return this._runTask(\n straightThroughStringTask(['add', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n cwd(directory: string | { path: string; root?: boolean }) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof directory === 'string') {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n\n if (typeof directory?.path === 'string') {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n (directory.root && this._executor) || undefined\n ),\n next\n );\n }\n\n return this._runTask(\n configurationErrorTask('Git.cwd: workingDirectory must be supplied as a string'),\n next\n );\n }\n\n hashObject(path: string, write: boolean | unknown) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n\n init(bare?: boolean | unknown) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n\n mergeFromTo(remote: string, branch: string) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n\n outputHandler(handler: outputHandler) {\n this._executor.outputHandler = handler;\n return this;\n }\n\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString),\n },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n\n stash() {\n return this._runTask(\n straightThroughStringTask(['stash', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n}\n\nObject.assign(\n SimpleGitApi.prototype,\n checkout(),\n commit(),\n config(),\n countObjects(),\n firstCommit(),\n grep(),\n log(),\n show(),\n version()\n);\n","import { append, remove } from '../utils';\nimport { createDeferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { createLogger } from '../git-logger';\n\ntype ScheduleCompleteCallback = () => void;\ntype ScheduledTask = Pick<DeferredPromise<ScheduleCompleteCallback>, 'promise' | 'done'> & {\n id: number;\n};\n\nconst createScheduledTask: () => ScheduledTask = (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred<ScheduleCompleteCallback>();\n\n return {\n promise,\n done,\n id,\n };\n };\n})();\n\nexport class Scheduler {\n private logger = createLogger('', 'scheduler');\n private pending: ScheduledTask[] = [];\n private running: ScheduledTask[] = [];\n\n constructor(private concurrency = 2) {\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n\n private schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n\n const task = append(this.running, this.pending.shift()!);\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n\n next(): Promise<ScheduleCompleteCallback> {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n\n this.schedule();\n\n return promise;\n }\n}\n","import { straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\n\nexport type ApplyOptions = Options &\n OptionFlags<\n | '--stat'\n | '--numstat'\n | '--summary'\n | '--check'\n | '--index'\n | '--intent-to-add'\n | '--3way'\n | '--apply'\n | '--no-add'\n | '-R'\n | '--reverse'\n | '--allow-binary-replacement'\n | '--binary'\n | '--reject'\n | '-z'\n | '--inaccurate-eof'\n | '--recount'\n | '--cached'\n | '--ignore-space-change'\n | '--ignore-whitespace'\n | '--verbose'\n | '--unsafe-paths'\n > &\n OptionFlags<'--whitespace', 'nowarn' | 'warn' | 'fix' | 'error' | 'error-all'> &\n OptionFlags<'--build-fake-ancestor' | '--exclude' | '--include' | '--directory', string> &\n OptionFlags<'-p' | '-C', number>;\n\nexport function applyPatchTask(patches: string[], customArgs: string[]): StringTask<string> {\n return straightThroughStringTask(['apply', ...customArgs, ...patches]);\n}\n","import {\n BranchMultiDeleteResult,\n BranchSingleDeleteFailure,\n BranchSingleDeleteResult,\n BranchSingleDeleteSuccess,\n} from '../../../typings';\n\nexport class BranchDeletionBatch implements BranchMultiDeleteResult {\n all: BranchSingleDeleteResult[] = [];\n branches: { [branchName: string]: BranchSingleDeleteResult } = {};\n errors: BranchSingleDeleteResult[] = [];\n\n get success(): boolean {\n return !this.errors.length;\n }\n}\n\nexport function branchDeletionSuccess(branch: string, hash: string): BranchSingleDeleteSuccess {\n return {\n branch,\n hash,\n success: true,\n };\n}\n\nexport function branchDeletionFailure(branch: string): BranchSingleDeleteFailure {\n return {\n branch,\n hash: null,\n success: false,\n };\n}\n\nexport function isSingleBranchDeleteFailure(\n test: BranchSingleDeleteResult\n): test is BranchSingleDeleteSuccess {\n return test.success;\n}\n","import { BranchMultiDeleteResult } from '../../../typings';\nimport {\n BranchDeletionBatch,\n branchDeletionFailure,\n branchDeletionSuccess,\n} from '../responses/BranchDeleteSummary';\nimport { TaskParser } from '../types';\nimport { ExitCodes, LineParser, parseStringResponse } from '../utils';\n\nconst deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\nconst deleteErrorRegex = /^error[^']+'([^']+)'/m;\n\nconst parsers: LineParser<BranchMultiDeleteResult>[] = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n];\n\nexport const parseBranchDeletions: TaskParser<string, BranchMultiDeleteResult> = (\n stdOut,\n stdErr\n) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers, [stdOut, stdErr]);\n};\n\nexport function hasBranchDeletionError(data: string, processExitCode: ExitCodes): boolean {\n return processExitCode === ExitCodes.ERROR && deleteErrorRegex.test(data);\n}\n","import type { BranchSummary, BranchSummaryBranch } from '../../../typings';\n\nexport enum BranchStatusIdentifier {\n CURRENT = '*',\n LINKED = '+',\n}\n\nexport class BranchSummaryResult implements BranchSummary {\n public all: string[] = [];\n public branches: { [p: string]: BranchSummaryBranch } = {};\n public current: string = '';\n public detached: boolean = false;\n\n push(\n status: BranchStatusIdentifier | unknown,\n detached: boolean,\n name: string,\n commit: string,\n label: string\n ) {\n if (status === BranchStatusIdentifier.CURRENT) {\n this.detached = detached;\n this.current = name;\n }\n\n this.all.push(name);\n this.branches[name] = {\n current: status === BranchStatusIdentifier.CURRENT,\n linkedWorkTree: status === BranchStatusIdentifier.LINKED,\n name,\n commit,\n label,\n };\n }\n}\n","import type { BranchSummary } from '../../../typings';\nimport { BranchStatusIdentifier, BranchSummaryResult } from '../responses/BranchSummary';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<BranchSummaryResult>[] = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n ),\n];\n\nconst currentBranchParser = new LineParser<BranchSummaryResult>(/^(\\S+)$/s, (result, [name]) => {\n result.push(BranchStatusIdentifier.CURRENT, false, name, '', '');\n});\n\nfunction branchStatus(input?: string) {\n return input ? input.charAt(0) : '';\n}\n\nexport function parseBranchSummary(stdOut: string, currentOnly = false): BranchSummary {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers,\n stdOut\n );\n}\n","import { BranchMultiDeleteResult, BranchSingleDeleteResult, BranchSummary } from '../../../typings';\nimport { StringTask } from '../types';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { hasBranchDeletionError, parseBranchDeletions } from '../parsers/parse-branch-delete';\nimport { parseBranchSummary } from '../parsers/parse-branch';\nimport { bufferToString } from '../utils';\n\nexport function containsDeleteBranchCommand(commands: string[]) {\n const deleteCommands = ['-d', '-D', '--delete'];\n return commands.some((command) => deleteCommands.includes(command));\n}\n\nexport function branchTask(\n customArgs: string[]\n): StringTask<BranchSummary | BranchSingleDeleteResult> {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes('--show-current');\n\n const commands = ['branch', ...customArgs];\n\n if (commands.length === 1) {\n commands.push('-a');\n }\n\n if (!commands.includes('-v')) {\n commands.splice(1, 0, '-v');\n }\n\n return {\n format: 'utf-8',\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n\n return parseBranchSummary(stdOut, isCurrentOnly);\n },\n };\n}\n\nexport function branchLocalTask(): StringTask<BranchSummary> {\n return {\n format: 'utf-8',\n commands: ['branch', '-v'],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n },\n };\n}\n\nexport function deleteBranchesTask(\n branches: string[],\n forceDelete = false\n): StringTask<BranchMultiDeleteResult> {\n return {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n done(stdOut);\n },\n };\n}\n\nexport function deleteBranchTask(\n branch: string,\n forceDelete = false\n): StringTask<BranchSingleDeleteResult> {\n const task: StringTask<BranchSingleDeleteResult> = {\n format: 'utf-8',\n commands: ['branch', '-v', forceDelete ? '-D' : '-d', branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch]!;\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n },\n };\n\n return task;\n}\n","import { normalize } from 'node:path';\n\n/**\n * Parser for the `check-ignore` command - returns each file as a string array\n */\nexport const parseCheckIgnore = (text: string): string[] => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n};\n\nfunction toPath(input: string) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, '');\n return path && normalize(path);\n}\n","import { StringTask } from '../types';\nimport { parseCheckIgnore } from '../responses/CheckIgnore';\n\nexport function checkIgnoreTask(paths: string[]): StringTask<string[]> {\n return {\n commands: ['check-ignore', ...paths],\n format: 'utf-8',\n parser: parseCheckIgnore,\n };\n}\n","import { configurationErrorTask, EmptyTask, straightThroughStringTask } from './task';\nimport { OptionFlags, Options, StringTask } from '../types';\nimport { append, filterString } from '../utils';\n\nexport type CloneOptions = Options &\n OptionFlags<\n | '--bare'\n | '--dissociate'\n | '--mirror'\n | '--no-checkout'\n | '--no-remote-submodules'\n | '--no-shallow-submodules'\n | '--no-single-branch'\n | '--no-tags'\n | '--remote-submodules'\n | '--single-branch'\n | '--shallow-submodules'\n | '--verbose'\n > &\n OptionFlags<'--depth' | '-j' | '--jobs', number> &\n OptionFlags<\n | '--branch'\n | '--origin'\n | '--recurse-submodules'\n | '--separate-git-dir'\n | '--shallow-exclude'\n | '--shallow-since'\n | '--template',\n string\n >;\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function cloneTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n): StringTask<string> | EmptyTask {\n const commands = ['clone', ...customArgs];\n\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function cloneMirrorTask(\n repo: string | undefined,\n directory: string | undefined,\n customArgs: string[]\n) {\n append(customArgs, '--mirror');\n\n return cloneTask(repo, directory, customArgs);\n}\n","import { FetchResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<FetchResult>[] = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking,\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking,\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking,\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from,\n });\n }\n ),\n];\n\nexport function parseFetchResult(stdOut: string, stdErr: string): FetchResult {\n const result: FetchResult = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: [],\n };\n return parseStringResponse(result, parsers, [stdOut, stdErr]);\n}\n","import { FetchResult } from '../../../typings';\nimport { parseFetchResult } from '../parsers/parse-fetch';\nimport { StringTask } from '../types';\n\nimport { configurationErrorTask, EmptyTask } from './task';\n\nfunction disallowedCommand(command: string) {\n return /^--upload-pack(=|$)/.test(command);\n}\n\nexport function fetchTask(\n remote: string,\n branch: string,\n customArgs: string[]\n): StringTask<FetchResult> | EmptyTask {\n const commands = ['fetch', ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: parseFetchResult,\n };\n}\n","import { MoveResult } from '../../../typings';\nimport { LineParser, parseStringResponse } from '../utils';\n\nconst parsers: LineParser<MoveResult>[] = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n }),\n];\n\nexport function parseMoveResult(stdOut: string): MoveResult {\n return parseStringResponse({ moves: [] }, parsers, stdOut);\n}\n","import { MoveResult } from '../../../typings';\nimport { parseMoveResult } from '../parsers/parse-move';\nimport { StringTask } from '../types';\nimport { asArray } from '../utils';\n\nexport function moveTask(from: string | string[], to: string): StringTask<MoveResult> {\n return {\n commands: ['mv', '-v', ...asArray(from), to],\n format: 'utf-8',\n parser: parseMoveResult,\n };\n}\n","import { PullResult } from '../../../typings';\nimport { GitResponseError } from '../errors/git-response-error';\nimport { parsePullErrorResult, parsePullResult } from '../parsers/parse-pull';\nimport { Maybe, StringTask } from '../types';\nimport { bufferToString } from '../utils';\n\nexport function pullTask(\n remote: Maybe<string>,\n branch: Maybe<string>,\n customArgs: string[]\n): StringTask<PullResult> {\n const commands: string[] = ['pull', ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n\n return {\n commands,\n format: 'utf-8',\n parser(stdOut, stdErr): PullResult {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n\n fail(_error);\n },\n };\n}\n","import { forEachLineWithContent } from '../utils';\n\nexport interface RemoteWithoutRefs {\n name: string;\n}\n\nexport interface RemoteWithRefs extends RemoteWithoutRefs {\n refs: {\n fetch: string;\n push: string;\n };\n}\n\nexport function parseGetRemotes(text: string): RemoteWithoutRefs[] {\n const remotes: { [name: string]: RemoteWithoutRefs } = {};\n\n forEach(text, ([name]) => (remotes[name] = { name }));\n\n return Object.values(remotes);\n}\n\nexport function parseGetRemotesVerbose(text: string): RemoteWithRefs[] {\n const remotes: { [name: string]: RemoteWithRefs } = {};\n\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name: name,\n refs: { fetch: '', push: '' },\n };\n }\n\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, '') as keyof RemoteWithRefs['refs']] = url;\n }\n });\n\n return Object.values(remotes);\n}\n\nfunction forEach(text: string, handler: (line: string[]) => void) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\n","import {\n parseGetRemotes,\n parseGetRemotesVerbose,\n type RemoteWithoutRefs,\n type RemoteWithRefs,\n} from '../responses/GetRemoteSummary';\nimport type { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addRemoteTask(\n remoteName: string,\n remoteRepo: string,\n customArgs: string[]\n): StringTask<string> {\n return straightThroughStringTask(['remote', 'add', ...customArgs, remoteName, remoteRepo]);\n}\n\nexport function getRemotesTask(verbose: true): StringTask<RemoteWithRefs[]>;\nexport function getRemotesTask(verbose: false): StringTask<RemoteWithoutRefs[]>;\nexport function getRemotesTask(\n verbose: boolean\n): StringTask<RemoteWithRefs[] | RemoteWithoutRefs[]> {\n const commands = ['remote'];\n if (verbose) {\n commands.push('-v');\n }\n\n return {\n commands,\n format: 'utf-8',\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes,\n };\n}\n\nexport function listRemotesTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'ls-remote') {\n commands.unshift('ls-remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function remoteTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'remote') {\n commands.unshift('remote');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function removeRemoteTask(remoteName: string) {\n return straightThroughStringTask(['remote', 'remove', remoteName]);\n}\n","import { LogOptions, LogResult } from '../../../typings';\nimport { logFormatFromCommand } from '../args/log-format';\nimport { createListLogSummaryParser } from '../parsers/parse-list-log-summary';\nimport type { StringTask } from '../types';\nimport { validateLogFormatConfig } from './diff';\nimport { parseLogOptions } from './log';\nimport type { EmptyTask } from './task';\n\nexport function stashListTask(\n opt: LogOptions = {},\n customArgs: string[]\n): EmptyTask | StringTask<LogResult> {\n const options = parseLogOptions<any>(opt);\n const commands = ['stash', 'list', ...options.commands, ...customArgs];\n const parser = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n\n return (\n validateLogFormatConfig(commands) || {\n commands,\n format: 'utf-8',\n parser,\n }\n );\n}\n","import { StringTask } from '../types';\nimport { straightThroughStringTask } from './task';\n\nexport function addSubModuleTask(repo: string, path: string): StringTask<string> {\n return subModuleTask(['add', repo, path]);\n}\n\nexport function initSubModuleTask(customArgs: string[]): StringTask<string> {\n return subModuleTask(['init', ...customArgs]);\n}\n\nexport function subModuleTask(customArgs: string[]): StringTask<string> {\n const commands = [...customArgs];\n if (commands[0] !== 'submodule') {\n commands.unshift('submodule');\n }\n\n return straightThroughStringTask(commands);\n}\n\nexport function updateSubModuleTask(customArgs: string[]): StringTask<string> {\n return subModuleTask(['update', ...customArgs]);\n}\n","import { TagResult } from '../../../typings';\n\nexport class TagList implements TagResult {\n constructor(\n public readonly all: string[],\n public readonly latest: string | undefined\n ) {}\n}\n\nexport const parseTagList = function (data: string, customSort = false) {\n const tags = data.split('\\n').map(trimmed).filter(Boolean);\n\n if (!customSort) {\n tags.sort(function (tagA, tagB) {\n const partsA = tagA.split('.');\n const partsB = tagB.split('.');\n\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n\n if (diff) {\n return diff;\n }\n }\n\n return 0;\n });\n }\n\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf('.') >= 0);\n\n return new TagList(tags, latest);\n};\n\nfunction singleSorted(a: number, b: number): number {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n\n return aIsNum ? sorted(a, b) : 0;\n}\n\nfunction sorted(a: number, b: number) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\n\nfunction trimmed(input: string) {\n return input.trim();\n}\n\nfunction toNumber(input: string | undefined) {\n if (typeof input === 'string') {\n return parseInt(input.replace(/^\\D+/g, ''), 10) || 0;\n }\n\n return 0;\n}\n","import { TagResult } from '../../../typings';\nimport { parseTagList } from '../responses/TagList';\nimport { StringTask } from '../types';\n\n/**\n * Task used by `git.tags`\n */\nexport function tagListTask(customArgs: string[] = []): StringTask<TagResult> {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n\n return {\n format: 'utf-8',\n commands: ['tag', '-l', ...customArgs],\n parser(text: string) {\n return parseTagList(text, hasCustomSort);\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addTagTask(name: string): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', name],\n parser() {\n return { name };\n },\n };\n}\n\n/**\n * Task used by `git.addTag`\n */\nexport function addAnnotatedTagTask(\n name: string,\n tagMessage: string\n): StringTask<{ name: string }> {\n return {\n format: 'utf-8',\n commands: ['tag', '-a', '-m', tagMessage, name],\n parser() {\n return { name };\n },\n };\n}\n","const { GitExecutor } = require('./lib/runners/git-executor');\nconst { SimpleGitApi } = require('./lib/simple-git-api');\n\nconst { Scheduler } = require('./lib/runners/scheduler');\nconst { configurationErrorTask } = require('./lib/tasks/task');\nconst {\n asArray,\n filterArray,\n filterPrimitives,\n filterString,\n filterStringOrStringArray,\n filterType,\n getTrailingOptions,\n trailingFunctionArgument,\n trailingOptionsArgument,\n} = require('./lib/utils');\nconst { applyPatchTask } = require('./lib/tasks/apply-patch');\nconst {\n branchTask,\n branchLocalTask,\n deleteBranchesTask,\n deleteBranchTask,\n} = require('./lib/tasks/branch');\nconst { checkIgnoreTask } = require('./lib/tasks/check-ignore');\nconst { checkIsRepoTask } = require('./lib/tasks/check-is-repo');\nconst { cloneTask, cloneMirrorTask } = require('./lib/tasks/clone');\nconst { cleanWithOptionsTask, isCleanOptionsArray } = require('./lib/tasks/clean');\nconst { diffSummaryTask } = require('./lib/tasks/diff');\nconst { fetchTask } = require('./lib/tasks/fetch');\nconst { moveTask } = require('./lib/tasks/move');\nconst { pullTask } = require('./lib/tasks/pull');\nconst { pushTagsTask } = require('./lib/tasks/push');\nconst {\n addRemoteTask,\n getRemotesTask,\n listRemotesTask,\n remoteTask,\n removeRemoteTask,\n} = require('./lib/tasks/remote');\nconst { getResetMode, resetTask } = require('./lib/tasks/reset');\nconst { stashListTask } = require('./lib/tasks/stash-list');\nconst {\n addSubModuleTask,\n initSubModuleTask,\n subModuleTask,\n updateSubModuleTask,\n} = require('./lib/tasks/sub-module');\nconst { addAnnotatedTagTask, addTagTask, tagListTask } = require('./lib/tasks/tag');\nconst { straightThroughBufferTask, straightThroughStringTask } = require('./lib/tasks/task');\n\nfunction Git(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor(\n options.baseDir,\n new Scheduler(options.maxConcurrentProcesses),\n plugins\n );\n\n this._trimmed = options.trimmed;\n}\n\n(Git.prototype = Object.create(SimpleGitApi.prototype)).constructor = Git;\n\n/**\n * Sets the path to a custom git binary, should either be `git` when there is an installation of git available on\n * the system path, or a fully qualified path to the executable.\n */\nGit.prototype.customBinary = function (command) {\n this._plugins.reconfigure('binary', command);\n return this;\n};\n\n/**\n * Sets an environment variable for the spawned child process, either supply both a name and value as strings or\n * a single object to entirely replace the current environment variables.\n *\n * @param {string|Object} name\n * @param {string} [value]\n * @returns {Git}\n */\nGit.prototype.env = function (name, value) {\n if (arguments.length === 1 && typeof name === 'object') {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n\n return this;\n};\n\n/**\n * List the stash(s) of the local repo\n */\nGit.prototype.stashList = function (options) {\n return this._runTask(\n stashListTask(\n trailingOptionsArgument(arguments) || {},\n (filterArray(options) && options) || []\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\nfunction createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== 'string') {\n return configurationErrorTask(`git.${api}() requires a string 'repoPath'`);\n }\n\n return task(repoPath, filterType(localPath, filterString), getTrailingOptions(arguments));\n}\n\n/**\n * Clone a git repo\n */\nGit.prototype.clone = function () {\n return this._runTask(\n createCloneTask('clone', cloneTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Mirror a git repo\n */\nGit.prototype.mirror = function () {\n return this._runTask(\n createCloneTask('mirror', cloneMirrorTask, ...arguments),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Moves one or more files to a new destination.\n *\n * @see https://git-scm.com/docs/git-mv\n *\n * @param {string|string[]} from\n * @param {string} to\n */\nGit.prototype.mv = function (from, to) {\n return this._runTask(moveTask(from, to), trailingFunctionArgument(arguments));\n};\n\n/**\n * Internally uses pull and tags to get the list of tags then checks out the latest tag.\n *\n * @param {Function} [then]\n */\nGit.prototype.checkoutLatestTag = function (then) {\n var git = this;\n return this.pull(function () {\n git.tags(function (err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n};\n\n/**\n * Pull the updated contents of the current repo\n */\nGit.prototype.pull = function (remote, branch, options, then) {\n return this._runTask(\n pullTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Fetch the updated contents of the current repo.\n *\n * @example\n * .fetch('upstream', 'master') // fetches from master on remote named upstream\n * .fetch(function () {}) // runs fetch against default remote and branch and calls function\n *\n * @param {string} [remote]\n * @param {string} [branch]\n */\nGit.prototype.fetch = function (remote, branch) {\n return this._runTask(\n fetchTask(\n filterType(remote, filterString),\n filterType(branch, filterString),\n getTrailingOptions(arguments)\n ),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Disables/enables the use of the console for printing warnings and errors, by default messages are not shown in\n * a production environment.\n *\n * @param {boolean} silence\n * @returns {Git}\n */\nGit.prototype.silent = function (silence) {\n console.warn(\n 'simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3'\n );\n return this;\n};\n\n/**\n * List all tags. When using git 2.7.0 or above, include an options object with `\"--sort\": \"property-name\"` to\n * sort the tags by that property instead of using the default semantic versioning sort.\n *\n * Note, supplying this option when it is not supported by your Git version will cause the operation to fail.\n *\n * @param {Object} [options]\n * @param {Function} [then]\n */\nGit.prototype.tags = function (options, then) {\n return this._runTask(\n tagListTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Rebases the current working copy. Options can be supplied either as an array of string parameters\n * to be sent to the `git rebase` command, or a standard options object.\n */\nGit.prototype.rebase = function () {\n return this._runTask(\n straightThroughStringTask(['rebase', ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Reset a repo\n */\nGit.prototype.reset = function (mode) {\n return this._runTask(\n resetTask(getResetMode(mode), getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Revert one or more commits in the local working copy\n */\nGit.prototype.revert = function (commit) {\n const next = trailingFunctionArgument(arguments);\n\n if (typeof commit !== 'string') {\n return this._runTask(configurationErrorTask('Commit must be a string'), next);\n }\n\n return this._runTask(\n straightThroughStringTask(['revert', ...getTrailingOptions(arguments, 0, true), commit]),\n next\n );\n};\n\n/**\n * Add a lightweight tag to the head of the current branch\n */\nGit.prototype.addTag = function (name) {\n const task =\n typeof name === 'string'\n ? addTagTask(name)\n : configurationErrorTask('Git.addTag requires a tag name');\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Add an annotated tag to the head of the current branch\n */\nGit.prototype.addAnnotatedTag = function (tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask(tagName, tagMessage),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete a local branch\n */\nGit.prototype.deleteLocalBranch = function (branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask(branchName, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Delete one or more local branches\n */\nGit.prototype.deleteLocalBranches = function (branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask(branchNames, typeof forceDelete === 'boolean' ? forceDelete : false),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * List all branches\n *\n * @param {Object | string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.branch = function (options, then) {\n return this._runTask(\n branchTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Return list of local branches\n *\n * @param {Function} [then]\n */\nGit.prototype.branchLocal = function (then) {\n return this._runTask(branchLocalTask(), trailingFunctionArgument(arguments));\n};\n\n/**\n * Executes any command against the git binary.\n */\nGit.prototype.raw = function (commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n\n command.push(...getTrailingOptions(arguments, 0, true));\n\n var next = trailingFunctionArgument(arguments);\n\n if (!command.length) {\n return this._runTask(\n configurationErrorTask('Raw: must supply one or more command to execute'),\n next\n );\n }\n\n return this._runTask(straightThroughStringTask(command, this._trimmed), next);\n};\n\nGit.prototype.submoduleAdd = function (repo, path, then) {\n return this._runTask(addSubModuleTask(repo, path), trailingFunctionArgument(arguments));\n};\n\nGit.prototype.submoduleUpdate = function (args, then) {\n return this._runTask(\n updateSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.submoduleInit = function (args, then) {\n return this._runTask(\n initSubModuleTask(getTrailingOptions(arguments, true)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.subModule = function (options, then) {\n return this._runTask(\n subModuleTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.listRemote = function () {\n return this._runTask(\n listRemotesTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Adds a remote to the list of remotes.\n */\nGit.prototype.addRemote = function (remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask(remoteName, remoteRepo, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes an entry by name from the list of remotes.\n */\nGit.prototype.removeRemote = function (remoteName, then) {\n return this._runTask(removeRemoteTask(remoteName), trailingFunctionArgument(arguments));\n};\n\n/**\n * Gets the currently available remotes, setting the optional verbose argument to true includes additional\n * detail on the remotes themselves.\n */\nGit.prototype.getRemotes = function (verbose, then) {\n return this._runTask(getRemotesTask(verbose === true), trailingFunctionArgument(arguments));\n};\n\n/**\n * Call any `git remote` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.remote = function (options, then) {\n return this._runTask(\n remoteTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Call any `git tag` function with arguments passed as an array of strings.\n *\n * @param {string[]} options\n * @param {Function} [then]\n */\nGit.prototype.tag = function (options, then) {\n const command = getTrailingOptions(arguments);\n\n if (command[0] !== 'tag') {\n command.unshift('tag');\n }\n\n return this._runTask(straightThroughStringTask(command), trailingFunctionArgument(arguments));\n};\n\n/**\n * Updates repository server info\n *\n * @param {Function} [then]\n */\nGit.prototype.updateServerInfo = function (then) {\n return this._runTask(\n straightThroughStringTask(['update-server-info']),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Pushes the current tag changes to a remote which can be either a URL or named remote. When not specified uses the\n * default configured remote spec.\n *\n * @param {string} [remote]\n * @param {Function} [then]\n */\nGit.prototype.pushTags = function (remote, then) {\n const task = pushTagsTask(\n { remote: filterType(remote, filterString) },\n getTrailingOptions(arguments)\n );\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\n/**\n * Removes the named files from source control.\n */\nGit.prototype.rm = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '-f', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Removes the named files from source control but keeps them on disk rather than deleting them entirely. To\n * completely remove the files, use `rm`.\n *\n * @param {string|string[]} files\n */\nGit.prototype.rmKeepLocal = function (files) {\n return this._runTask(\n straightThroughStringTask(['rm', '--cached', ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n * Returns a list of objects in a tree based on commit hash. Passing in an object hash returns the object's content,\n * size, and type.\n *\n * Passing \"-p\" will instruct cat-file to determine the object type, and display its formatted contents.\n *\n * @param {string[]} [options]\n * @param {Function} [then]\n */\nGit.prototype.catFile = function (options, then) {\n return this._catFile('utf-8', arguments);\n};\n\nGit.prototype.binaryCatFile = function () {\n return this._catFile('buffer', arguments);\n};\n\nGit.prototype._catFile = function (format, args) {\n var handler = trailingFunctionArgument(args);\n var command = ['cat-file'];\n var options = args[0];\n\n if (typeof options === 'string') {\n return this._runTask(\n configurationErrorTask('Git.catFile: options must be supplied as an array of strings'),\n handler\n );\n }\n\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n\n const task =\n format === 'buffer' ? straightThroughBufferTask(command) : straightThroughStringTask(command);\n\n return this._runTask(task, handler);\n};\n\nGit.prototype.diff = function (options, then) {\n const task = filterString(options)\n ? configurationErrorTask(\n 'git.diff: supplying options as a single string is no longer supported, switch to an array of strings'\n )\n : straightThroughStringTask(['diff', ...getTrailingOptions(arguments)]);\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.diffSummary = function () {\n return this._runTask(\n diffSummaryTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.applyPatch = function (patches) {\n const task = !filterStringOrStringArray(patches)\n ? configurationErrorTask(\n `git.applyPatch requires one or more string patches as the first argument`\n )\n : applyPatchTask(asArray(patches), getTrailingOptions([].slice.call(arguments, 1)));\n\n return this._runTask(task, trailingFunctionArgument(arguments));\n};\n\nGit.prototype.revparse = function () {\n const commands = ['rev-parse', ...getTrailingOptions(arguments, true)];\n return this._runTask(\n straightThroughStringTask(commands, true),\n trailingFunctionArgument(arguments)\n );\n};\n\n/**\n */\nGit.prototype.clean = function (mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray(mode);\n const cleanMode =\n (usingCleanOptionsArray && mode.join('')) || filterType(mode, filterString) || '';\n const customArgs = getTrailingOptions([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n\n return this._runTask(\n cleanWithOptionsTask(cleanMode, customArgs),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.exec = function (then) {\n const task = {\n commands: [],\n format: 'utf-8',\n parser() {\n if (typeof then === 'function') {\n then();\n }\n },\n };\n\n return this._runTask(task);\n};\n\n/**\n * Clears the queue of pending commands and returns the wrapper instance for chaining.\n *\n * @returns {Git}\n */\nGit.prototype.clearQueue = function () {\n // TODO:\n // this._executor.clear();\n return this;\n};\n\n/**\n * Check if a pathname or pathnames are excluded by .gitignore\n *\n * @param {string|string[]} pathnames\n * @param {Function} [then]\n */\nGit.prototype.checkIgnore = function (pathnames, then) {\n return this._runTask(\n checkIgnoreTask(asArray(filterType(pathnames, filterStringOrStringArray, []))),\n trailingFunctionArgument(arguments)\n );\n};\n\nGit.prototype.checkIsRepo = function (checkType, then) {\n return this._runTask(\n checkIsRepoTask(filterType(checkType, filterString)),\n trailingFunctionArgument(arguments)\n );\n};\n\nmodule.exports = Git;\n","import { pathspec } from './args/pathspec';\nimport { GitConstructError } from './errors/git-construct-error';\nimport { GitError } from './errors/git-error';\nimport { GitPluginError } from './errors/git-plugin-error';\nimport { GitResponseError } from './errors/git-response-error';\nimport { TaskConfigurationError } from './errors/task-configuration-error';\nimport { CheckRepoActions } from './tasks/check-is-repo';\nimport { CleanOptions } from './tasks/clean';\nimport { GitConfigScope } from './tasks/config';\nimport { DiffNameStatus } from './tasks/diff-name-status';\nimport { grepQueryBuilder } from './tasks/grep';\nimport { ResetMode } from './tasks/reset';\n\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n grepQueryBuilder,\n pathspec,\n};\n","import { GitError } from './git-error';\nimport { SimpleGitOptions } from '../types';\n\n/**\n * The `GitConstructError` is thrown when an error occurs in the constructor\n * of the `simple-git` instance itself. Most commonly as a result of using\n * a `baseDir` option that points to a folder that either does not exist,\n * or cannot be read by the user the node script is running as.\n *\n * Check the `.message` property for more detail including the properties\n * passed to the constructor.\n */\nexport class GitConstructError extends GitError {\n constructor(\n public readonly config: SimpleGitOptions,\n message: string\n ) {\n super(undefined, message);\n }\n}\n","import { SimpleGitOptions, SimpleGitTask } from '../types';\nimport { GitError } from './git-error';\n\nexport class GitPluginError extends GitError {\n constructor(\n public task?: SimpleGitTask<any>,\n public readonly plugin?: keyof SimpleGitOptions,\n message?: string\n ) {\n super(task, message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { SimpleGitOptions } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function abortPlugin(signal: SimpleGitOptions['abort']) {\n if (!signal) {\n return;\n }\n\n const onSpawnAfter: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort signal received'));\n }\n\n signal.addEventListener('abort', kill);\n\n context.spawned.on('close', () => signal.removeEventListener('abort', kill));\n },\n };\n\n const onSpawnBefore: SimpleGitPlugin<'spawn.before'> = {\n type: 'spawn.before',\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(undefined, 'abort', 'Abort already signaled'));\n }\n },\n };\n\n return [onSpawnBefore, onSpawnAfter];\n}\n","import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport { GitPluginError } from '../errors/git-plugin-error';\nimport type { SimpleGitPluginConfig } from '../types';\n\nfunction isConfigSwitch(arg: string | unknown) {\n return typeof arg === 'string' && arg.trim().toLowerCase() === '-c';\n}\n\nfunction preventProtocolOverride(arg: string, next: string) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n\n throw new GitPluginError(\n undefined,\n 'unsafe',\n 'Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol'\n );\n}\n\nfunction preventUploadPack(arg: string, method: string) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'clone' && /^\\s*-u\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n\n if (method === 'push' && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n undefined,\n 'unsafe',\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\n\nexport function blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false,\n}: SimpleGitPluginConfig['unsafe'] = {}): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : '';\n\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n\n return args;\n },\n };\n}\n","import { prefixedArray } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function commandConfigPrefixingPlugin(\n configuration: string[]\n): SimpleGitPlugin<'spawn.args'> {\n const prefix = prefixedArray(configuration, '-c');\n\n return {\n type: 'spawn.args',\n action(data) {\n return [...prefix, ...data];\n },\n };\n}\n","import { deferred, DeferredPromise } from '@kwsites/promise-deferred';\nimport { SimpleGitPluginConfig } from '../types';\nimport { delay } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nconst never = deferred().promise;\n\nexport function completionDetectionPlugin({\n onClose = true,\n onExit = 50,\n}: SimpleGitPluginConfig['completion'] = {}): SimpleGitPlugin<'spawn.after'> {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred(),\n };\n\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise,\n ]);\n\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n\n return {\n close(code: number) {\n exitCode = code;\n events.close.done();\n },\n exit(code: number) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result,\n };\n }\n\n function configureTimeout(\n flag: boolean | number,\n event: DeferredPromise<void>,\n timeout: DeferredPromise<void>\n ) {\n if (flag === false) {\n return;\n }\n\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n\n return {\n type: 'spawn.after',\n async action(_data, { spawned, close }) {\n const events = createEvents();\n\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n\n spawned.stdout?.on('data', quickClose);\n spawned.stderr?.on('data', quickClose);\n spawned.on('error', quickClose);\n\n spawned.on('close', (code: number) => events.close(code));\n spawned.on('exit', (code: number) => events.exit(code));\n\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err as Error);\n }\n },\n };\n}\n","import type { SimpleGitOptions } from '../types';\n\nimport { GitPluginError } from '../errors/git-plugin-error';\nimport { asArray } from '../utils';\nimport { PluginStore } from './plugin-store';\n\nconst WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nconst WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\n\nfunction isBadArgument(arg: string) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_-]+)$/i.test(arg);\n}\n\nfunction toBinaryConfig(\n input: string[],\n allowUnsafe: boolean\n): { binary: string; prefix?: string } {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(undefined, 'binary', WRONG_NUMBER_ERR);\n }\n\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(undefined, 'binary', WRONG_CHARS_ERR);\n }\n }\n\n const [binary, prefix] = input;\n return {\n binary,\n prefix,\n };\n}\n\nexport function customBinaryPlugin(\n plugins: PluginStore,\n input: SimpleGitOptions['binary'] = ['git'],\n allowUnsafe = false\n) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n\n plugins.on('binary', (input) => {\n config = toBinaryConfig(asArray(input), allowUnsafe);\n });\n\n plugins.append('spawn.binary', () => {\n return config.binary;\n });\n\n plugins.append('spawn.args', (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n","import { GitError } from '../errors/git-error';\nimport { GitExecutorResult, SimpleGitPluginConfig } from '../types';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\ntype TaskResult = Omit<GitExecutorResult, 'rejection'>;\n\nfunction isTaskError(result: TaskResult) {\n return !!(result.exitCode && result.stdErr.length);\n}\n\nfunction getErrorMessage(result: TaskResult) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\n\nexport function errorDetectionHandler(\n overwrite = false,\n isError = isTaskError,\n errorMessage: (result: TaskResult) => Buffer | Error = getErrorMessage\n) {\n return (error: Buffer | Error | undefined, result: TaskResult) => {\n if ((!overwrite && error) || !isError(result)) {\n return error;\n }\n\n return errorMessage(result);\n };\n}\n\nexport function errorDetectionPlugin(\n config: SimpleGitPluginConfig['errors']\n): SimpleGitPlugin<'task.error'> {\n return {\n type: 'task.error',\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode,\n });\n\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(undefined, error.toString('utf-8')) };\n }\n\n return {\n error,\n };\n },\n };\n}\n","import { EventEmitter } from 'node:events';\n\nimport type {\n SimpleGitPlugin,\n SimpleGitPluginType,\n SimpleGitPluginTypes,\n} from './simple-git-plugin';\nimport { append, asArray } from '../utils';\nimport type { SimpleGitPluginConfig } from '../types';\n\nexport class PluginStore {\n private plugins: Set<SimpleGitPlugin<SimpleGitPluginType>> = new Set();\n private events = new EventEmitter();\n\n on<K extends keyof SimpleGitPluginConfig>(\n type: K,\n listener: (data: SimpleGitPluginConfig[K]) => void\n ) {\n this.events.on(type, listener);\n }\n\n reconfigure<K extends keyof SimpleGitPluginConfig>(type: K, data: SimpleGitPluginConfig[K]) {\n this.events.emit(type, data);\n }\n\n public append<T extends SimpleGitPluginType>(type: T, action: SimpleGitPlugin<T>['action']) {\n const plugin = append(this.plugins, { type, action });\n\n return () => this.plugins.delete(plugin);\n }\n\n public add<T extends SimpleGitPluginType>(\n plugin: void | SimpleGitPlugin<T> | SimpleGitPlugin<T>[]\n ) {\n const plugins: SimpleGitPlugin<T>[] = [];\n\n asArray(plugin).forEach((plugin) => plugin && this.plugins.add(append(plugins, plugin)));\n\n return () => {\n plugins.forEach((plugin) => this.plugins.delete(plugin));\n };\n }\n\n public exec<T extends SimpleGitPluginType>(\n type: T,\n data: SimpleGitPluginTypes[T]['data'],\n context: SimpleGitPluginTypes[T]['context']\n ): typeof data {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n\n return output;\n }\n}\n","import { SimpleGitOptions } from '../types';\nimport { asNumber, including } from '../utils';\n\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function progressMonitorPlugin(progress: Exclude<SimpleGitOptions['progress'], void>) {\n const progressCommand = '--progress';\n const progressMethods = ['checkout', 'clone', 'fetch', 'pull', 'push'];\n\n const onProgress: SimpleGitPlugin<'spawn.after'> = {\n type: 'spawn.after',\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n\n context.spawned.stderr?.on('data', (chunk: Buffer) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString('utf8'));\n if (!message) {\n return;\n }\n\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4]),\n });\n });\n },\n };\n\n const onArgs: SimpleGitPlugin<'spawn.args'> = {\n type: 'spawn.args',\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n\n return including(args, progressCommand);\n },\n };\n\n return [onArgs, onProgress];\n}\n\nfunction progressEventStage(input: string) {\n return String(input.toLowerCase().split(' ', 1)) || 'unknown';\n}\n","import { SpawnOptions } from 'child_process';\nimport { pick } from '../utils';\nimport { SimpleGitPlugin } from './simple-git-plugin';\n\nexport function spawnOptionsPlugin(\n spawnOptions: Partial<SpawnOptions>\n): SimpleGitPlugin<'spawn.options'> {\n const options = pick(spawnOptions, ['uid', 'gid']);\n\n return {\n type: 'spawn.options',\n action(data) {\n return { ...options, ...data };\n },\n };\n}\n","import type { SimpleGitPlugin } from './simple-git-plugin';\n\nimport type { SimpleGitOptions } from '../types';\nimport { GitPluginError } from '../errors/git-plugin-error';\n\nexport function timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true,\n}: Exclude<SimpleGitOptions['timeout'], undefined>): SimpleGitPlugin<'spawn.after'> | void {\n if (block > 0) {\n return {\n type: 'spawn.after',\n action(_data, context) {\n let timeout: NodeJS.Timeout;\n\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n\n function stop() {\n context.spawned.stdout?.off('data', wait);\n context.spawned.stderr?.off('data', wait);\n context.spawned.off('exit', stop);\n context.spawned.off('close', stop);\n timeout && clearTimeout(timeout);\n }\n\n function kill() {\n stop();\n context.kill(new GitPluginError(undefined, 'timeout', `block timeout reached`));\n }\n\n stdOut && context.spawned.stdout?.on('data', wait);\n stdErr && context.spawned.stderr?.on('data', wait);\n context.spawned.on('exit', stop);\n context.spawned.on('close', stop);\n\n wait();\n },\n };\n }\n}\n","import { SimpleGitPlugin } from './simple-git-plugin';\nimport { isPathSpec, toPaths } from '../args/pathspec';\n\nexport function suffixPathsPlugin(): SimpleGitPlugin<'spawn.args'> {\n return {\n type: 'spawn.args',\n action(data) {\n const prefix: string[] = [];\n let suffix: undefined | string[];\n function append(args: string[]) {\n (suffix = suffix || []).push(...args);\n }\n\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n\n if (isPathSpec(param)) {\n append(toPaths(param));\n continue;\n }\n\n if (param === '--') {\n append(\n data.slice(i + 1).flatMap((item) => (isPathSpec(item) && toPaths(item)) || item)\n );\n break;\n }\n\n prefix.push(param);\n }\n\n return !suffix ? prefix : [...prefix, '--', ...suffix.map(String)];\n },\n };\n}\n","import { SimpleGitFactory } from '../../typings';\n\nimport * as api from './api';\nimport {\n abortPlugin,\n blockUnsafeOperationsPlugin,\n commandConfigPrefixingPlugin,\n completionDetectionPlugin,\n customBinaryPlugin,\n errorDetectionHandler,\n errorDetectionPlugin,\n PluginStore,\n progressMonitorPlugin,\n spawnOptionsPlugin,\n timeoutPlugin,\n} from './plugins';\nimport { suffixPathsPlugin } from './plugins/suffix-paths.plugin';\nimport { createInstanceConfig, folderExists } from './utils';\nimport { SimpleGitOptions } from './types';\n\nconst Git = require('../git');\n\n/**\n * Adds the necessary properties to the supplied object to enable it for use as\n * the default export of a module.\n *\n * Eg: `module.exports = esModuleFactory({ something () {} })`\n */\nexport function esModuleFactory<T>(defaultExport: T) {\n return Object.defineProperties(defaultExport, {\n __esModule: { value: true },\n default: { value: defaultExport },\n }) as T & { __esModule: true; default: T };\n}\n\nexport function gitExportFactory(factory: SimpleGitFactory) {\n return Object.assign(factory.bind(null), api);\n}\n\nexport function gitInstanceFactory(\n baseDir?: string | Partial<SimpleGitOptions>,\n options?: Partial<SimpleGitOptions>\n) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n (baseDir && (typeof baseDir === 'string' ? { baseDir } : baseDir)) || {},\n options\n );\n\n if (!folderExists(config.baseDir)) {\n throw new api.GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n\n return new Git(config, plugins);\n}\n","import { SimpleGit, SimpleGitOptions } from '../../../typings';\n\nimport { GitResponseError } from '../errors/git-response-error';\nimport { gitInstanceFactory } from '../git-factory';\nimport { SimpleGitTaskCallback } from '../types';\n\nconst functionNamesBuilderApi = ['customBinary', 'env', 'outputHandler', 'silent'];\n\nconst functionNamesPromiseApi = [\n 'add',\n 'addAnnotatedTag',\n 'addConfig',\n 'addRemote',\n 'addTag',\n 'applyPatch',\n 'binaryCatFile',\n 'branch',\n 'branchLocal',\n 'catFile',\n 'checkIgnore',\n 'checkIsRepo',\n 'checkout',\n 'checkoutBranch',\n 'checkoutLatestTag',\n 'checkoutLocalBranch',\n 'clean',\n 'clone',\n 'commit',\n 'cwd',\n 'deleteLocalBranch',\n 'deleteLocalBranches',\n 'diff',\n 'diffSummary',\n 'exec',\n 'fetch',\n 'getRemotes',\n 'init',\n 'listConfig',\n 'listRemote',\n 'log',\n 'merge',\n 'mergeFromTo',\n 'mirror',\n 'mv',\n 'pull',\n 'push',\n 'pushTags',\n 'raw',\n 'rebase',\n 'remote',\n 'removeRemote',\n 'reset',\n 'revert',\n 'revparse',\n 'rm',\n 'rmKeepLocal',\n 'show',\n 'stash',\n 'stashList',\n 'status',\n 'subModule',\n 'submoduleAdd',\n 'submoduleInit',\n 'submoduleUpdate',\n 'tag',\n 'tags',\n 'updateServerInfo',\n];\n\nexport function gitP(\n ...args: [] | [string] | [Partial<SimpleGitOptions>] | [string, Partial<SimpleGitOptions>]\n): SimpleGit {\n let git: any;\n\n let chain = Promise.resolve();\n\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n\n function builderReturn() {\n return promiseApi;\n }\n\n function chainReturn() {\n return chain;\n }\n\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api: any, name: string) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative,\n });\n\n return api;\n },\n {}\n );\n\n return promiseApi as SimpleGit;\n\n function asyncWrapper(fn: string, git: any): (...args: any[]) => Promise<any> {\n return function (...args: any[]) {\n if (typeof args[args.length] === 'function') {\n throw new TypeError(\n 'Promise interface requires that handlers are not supplied inline, ' +\n 'trailing function not allowed in call to ' +\n fn\n );\n }\n\n return chain.then(function () {\n return new Promise(function (resolve, reject) {\n const callback: SimpleGitTaskCallback = (err: Error | null, result?: any) => {\n if (err) {\n return reject(toError(err));\n }\n\n resolve(result);\n };\n args.push(callback);\n\n git[fn].apply(git, args);\n });\n });\n };\n }\n\n function syncWrapper(fn: string, git: any, api: SimpleGit) {\n return (...args: any[]) => {\n git[fn](...args);\n\n return api;\n };\n }\n}\n\nfunction toError(error: Error | string | any): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === 'string') {\n return new Error(error);\n }\n\n return new GitResponseError(error);\n}\n","import { gitInstanceFactory } from './lib/git-factory';\n\nexport { gitP } from './lib/runners/promise-wrapped';\nexport * from './lib/api';\n\nexport const simpleGit = gitInstanceFactory;\n\nexport default gitInstanceFactory;\n","export function getErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\nimport simpleGit from 'simple-git';\nimport { getConfig } from '@/app/actions/config';\nimport { getAllCredentials, getCredentialById, getCredentialToken } from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n buildTtydTerminalSrc,\n detectGitRemoteProvider,\n getTmuxSessionName,\n parseGitRemoteHost,\n TerminalSessionEnvironment,\n TerminalSessionRole,\n} from '@/lib/terminal-session';\n\nexport type FileSystemItem = {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n};\n\nexport type GitBranch = {\n name: string;\n current: boolean;\n};\n\nexport type SupportedAgentCli = 'gemini' | 'codex' | 'agent';\n\ntype AgentCliConfig = {\n executable: string;\n installCommand: string;\n};\n\nconst AGENT_CLI_CONFIG: Record<SupportedAgentCli, AgentCliConfig> = {\n gemini: {\n executable: 'gemini',\n installCommand: 'npm install -g google/gemini-cli',\n },\n codex: {\n executable: 'codex',\n installCommand: 'npm i -g openai/codex',\n },\n agent: {\n executable: 'agent',\n installCommand: 'curl https://cursor.com/install -fsS | bash',\n },\n};\n\nfunction normalizeAgentCli(agentCli: string): SupportedAgentCli | null {\n if (agentCli === 'gemini' || agentCli === 'codex' || agentCli === 'agent') {\n return agentCli;\n }\n return null;\n}\n\nexport async function getHomeDirectory() {\n return os.homedir();\n}\n\nexport async function listPathEntries(dirPath: string): Promise<FileSystemItem[]> {\n try {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n\n const sortedEntries = entries.sort((a, b) => {\n if (a.isDirectory() && !b.isDirectory()) return -1;\n if (!a.isDirectory() && b.isDirectory()) return 1;\n return a.name.localeCompare(b.name);\n });\n\n const items = await Promise.all(\n sortedEntries.map(async (entry) => {\n if (!entry.isDirectory() && !entry.isFile()) return null;\n\n const fullPath = path.join(dirPath, entry.name);\n let isGitRepo = false;\n\n if (entry.isDirectory()) {\n try {\n const gitDir = path.join(fullPath, '.git');\n await fs.access(gitDir);\n isGitRepo = true;\n } catch {\n isGitRepo = false;\n }\n }\n\n return {\n name: entry.name,\n path: fullPath,\n isDirectory: entry.isDirectory(),\n isGitRepo,\n } as FileSystemItem;\n })\n );\n\n return items.filter((item): item is FileSystemItem => item !== null);\n } catch (error) {\n console.error('Error listing directory entries:', error);\n return [];\n }\n}\n\nexport async function listDirectories(dirPath: string): Promise<FileSystemItem[]> {\n const items = await listPathEntries(dirPath);\n return items.filter((item) => item.isDirectory);\n}\n\nexport async function checkDirectoryAccessible(dirPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(dirPath);\n if (!stats.isDirectory()) return false;\n await fs.readdir(dirPath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function getBranches(repoPath: string): Promise<GitBranch[]> {\n try {\n const git = simpleGit(repoPath);\n const branchSummary = await git.branchLocal();\n\n return branchSummary.all.map(name => ({\n name,\n current: branchSummary.current === name,\n }));\n } catch (error) {\n console.error('Error fetching branches:', error);\n throw new Error('Failed to fetch branches. Make sure the path is a valid git repository.');\n }\n}\n\nexport async function checkoutBranch(repoPath: string, branchName: string): Promise<void> {\n try {\n const git = simpleGit(repoPath);\n await git.checkout(branchName);\n } catch (error) {\n console.error('Error checking out branch:', error);\n throw new Error(`Failed to checkout branch ${branchName}`);\n }\n}\n\nexport async function checkIsGitRepo(dirPath: string): Promise<boolean> {\n try {\n const gitDir = path.join(dirPath, '.git');\n await fs.access(gitDir);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function checkAgentCliInstalled(\n agentCli: string\n): Promise<{ success: boolean; installed: boolean; error?: string }> {\n const normalizedCli = normalizeAgentCli(agentCli);\n if (!normalizedCli) {\n return { success: false, installed: false, error: `Unsupported coding agent CLI: ${agentCli}` };\n }\n\n try {\n const { spawn } = await import('child_process');\n const cliConfig = AGENT_CLI_CONFIG[normalizedCli];\n const isWindows = os.platform() === 'win32';\n const shell = isWindows ? 'powershell' : 'bash';\n const shellArgs = isWindows\n ? ['-Command', `Get-Command ${cliConfig.executable} -ErrorAction SilentlyContinue`]\n : ['-lc', `command -v ${cliConfig.executable}`];\n\n const exitCode = await new Promise<number>((resolve) => {\n const child = spawn(shell, shellArgs, { stdio: 'ignore' });\n child.on('close', (code) => resolve(code ?? 1));\n child.on('error', () => resolve(1));\n });\n\n return { success: true, installed: exitCode === 0 };\n } catch (error) {\n console.error('Failed to detect coding agent CLI:', error);\n return { success: false, installed: false, error: 'Failed to detect coding agent CLI installation status.' };\n }\n}\n\nexport async function installAgentCli(agentCli: string): Promise<{ success: boolean; error?: string }> {\n const normalizedCli = normalizeAgentCli(agentCli);\n if (!normalizedCli) {\n return { success: false, error: `Unsupported coding agent CLI: ${agentCli}` };\n }\n\n try {\n const { spawn } = await import('child_process');\n const cliConfig = AGENT_CLI_CONFIG[normalizedCli];\n const isWindows = os.platform() === 'win32';\n const shell = isWindows ? 'powershell' : 'bash';\n const shellArgs = isWindows\n ? ['-Command', cliConfig.installCommand]\n : ['-lc', cliConfig.installCommand];\n\n const outputChunks: string[] = [];\n const exitCode = await new Promise<number>((resolve) => {\n const child = spawn(shell, shellArgs, {\n cwd: os.homedir(),\n env: process.env,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n child.stdout.on('data', (chunk: Buffer) => {\n outputChunks.push(chunk.toString());\n });\n\n child.stderr.on('data', (chunk: Buffer) => {\n outputChunks.push(chunk.toString());\n });\n\n child.on('close', (code) => resolve(code ?? 1));\n child.on('error', () => resolve(1));\n });\n\n if (exitCode === 0) {\n return { success: true };\n }\n\n const detail = outputChunks.join('').trim();\n return {\n success: false,\n error: detail || `Failed to install ${normalizedCli} CLI.`,\n };\n } catch (error) {\n console.error('Failed to install coding agent CLI:', error);\n return { success: false, error: 'Failed to install coding agent CLI.' };\n }\n}\n\n// Global variable to track the ttyd process\ndeclare global {\n var ttydProcess: ReturnType<typeof import('child_process').spawn> | undefined;\n var ttydPersistenceMode: 'tmux' | 'shell' | undefined;\n}\n\ntype TerminalSessionSources = {\n agentTerminalSrc: string;\n floatingTerminalSrc: string;\n};\n\nfunction toTerminalSessionEnvironment(\n credential: Credential,\n token: string,\n): TerminalSessionEnvironment {\n return credential.type === 'github'\n ? { name: 'GITHUB_TOKEN', value: token }\n : { name: 'GITLAB_TOKEN', value: token };\n}\n\nfunction getGitLabCredentialHost(credential: Credential): string | null {\n if (credential.type !== 'gitlab') return null;\n\n try {\n return new URL(credential.serverUrl).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nfunction pickCandidateCredential(\n credentials: Credential[],\n provider: 'github' | 'gitlab',\n remoteHost: string | null,\n): Credential | null {\n if (provider === 'github') {\n return credentials.find((credential) => credential.type === 'github') || null;\n }\n\n if (remoteHost) {\n const hostMatch = credentials.find((credential) => (\n credential.type === 'gitlab'\n && getGitLabCredentialHost(credential) === remoteHost\n ));\n if (hostMatch) return hostMatch;\n }\n\n return credentials.find((credential) => credential.type === 'gitlab') || null;\n}\n\nasync function getPrimaryRemoteUrl(repoPath: string): Promise<string | null> {\n const git = simpleGit(repoPath);\n\n try {\n const originUrl = (await git.raw(['remote', 'get-url', 'origin'])).trim();\n if (originUrl) return originUrl;\n } catch {\n // Fallback to first available remote below.\n }\n\n try {\n const remotes = await git.getRemotes(true);\n for (const remote of remotes) {\n const fetchUrl = remote.refs?.fetch?.trim();\n if (fetchUrl) return fetchUrl;\n\n const pushUrl = remote.refs?.push?.trim();\n if (pushUrl) return pushUrl;\n }\n } catch {\n // Ignore and fallback to null.\n }\n\n return null;\n}\n\nasync function resolveTerminalSessionEnvironment(repoPath: string): Promise<TerminalSessionEnvironment | null> {\n const config = await getConfig();\n const repoSettings = config.repoSettings?.[repoPath];\n\n if (repoSettings?.credentialId) {\n const selectedCredential = await getCredentialById(repoSettings.credentialId);\n if (selectedCredential) {\n const token = await getCredentialToken(selectedCredential.id);\n if (token) {\n return toTerminalSessionEnvironment(selectedCredential, token);\n }\n }\n }\n\n const remoteUrl = await getPrimaryRemoteUrl(repoPath);\n if (!remoteUrl) return null;\n\n const allCredentials = await getAllCredentials();\n const provider = detectGitRemoteProvider(remoteUrl, {\n gitlabHosts: allCredentials.flatMap((credential) => {\n if (credential.type !== 'gitlab') return [];\n const host = getGitLabCredentialHost(credential);\n return host ? [host] : [];\n }),\n });\n if (!provider) return null;\n\n const remoteHost = parseGitRemoteHost(remoteUrl);\n\n const credential = pickCandidateCredential(allCredentials, provider, remoteHost);\n\n if (!credential) return null;\n\n const token = await getCredentialToken(credential.id);\n if (!token) return null;\n\n return toTerminalSessionEnvironment(credential, token);\n}\n\nexport async function getSessionTerminalSources(\n sessionName: string,\n repoPath: string,\n): Promise<TerminalSessionSources> {\n const fallback: TerminalSessionSources = {\n agentTerminalSrc: buildTtydTerminalSrc(sessionName, 'agent'),\n floatingTerminalSrc: buildTtydTerminalSrc(sessionName, 'terminal'),\n };\n\n if (os.platform() === 'win32') {\n return fallback;\n }\n\n try {\n const environment = await resolveTerminalSessionEnvironment(repoPath);\n return {\n agentTerminalSrc: buildTtydTerminalSrc(sessionName, 'agent', environment),\n floatingTerminalSrc: buildTtydTerminalSrc(sessionName, 'terminal', environment),\n };\n } catch (error) {\n console.error('Failed to resolve terminal session environment:', error);\n return fallback;\n }\n}\n\nexport async function startTtydProcess(): Promise<{ success: boolean; persistenceMode?: 'tmux' | 'shell'; error?: string }> {\n if (global.ttydProcess) {\n if (global.ttydPersistenceMode === 'tmux' && os.platform() !== 'win32') {\n try {\n const { spawnSync } = await import('child_process');\n // Re-apply tmux defaults for already-running instances so wheel scrollback stays available.\n spawnSync('tmux', ['set-option', '-g', 'mouse', 'on'], {\n stdio: 'ignore',\n env: process.env,\n });\n } catch (error) {\n console.error('Failed to apply tmux mouse option:', error);\n }\n }\n return { success: true, persistenceMode: global.ttydPersistenceMode || 'shell' };\n }\n\n try {\n const { spawn, spawnSync } = await import('child_process');\n\n const env: NodeJS.ProcessEnv = { ...process.env };\n // Clean up environment variables to prevent conflicts\n // Specifically remove TURBOPACK which causes \"Multiple bundler flags set\" error\n // when running next dev inside the terminal if the parent process has it set.\n delete (env as any).TURBOPACK;\n delete (env as any).PORT;\n delete (env as any).NODE_ENV;\n\n const workingDir = os.homedir();\n const isWindows = os.platform() === 'win32';\n const commandProbe = isWindows ? 'where' : 'which';\n const hasTmux =\n !isWindows &&\n spawnSync(commandProbe, ['tmux'], {\n stdio: 'ignore',\n env: process.env,\n }).status === 0;\n\n const ttydArgs = [\n '-p', '7681',\n '-t', 'theme={\"background\": \"white\", \"foreground\": \"black\", \"cursor\": \"black\", \"selectionBackground\": \"rgba(59, 130, 246, 0.4)\"}',\n '-t', 'disableResizeOverlay=true',\n '-t', 'fontSize=12',\n '-t', 'fontWeight=300',\n '-t', 'fontWeightBold=500',\n '-w', workingDir,\n '-W',\n ];\n\n let persistenceMode: 'tmux' | 'shell' = 'shell';\n if (hasTmux) {\n // Keep deep history and wheel scrollback in tmux-backed ttyd sessions.\n spawnSync('tmux', ['start-server'], {\n stdio: 'ignore',\n env: process.env,\n });\n spawnSync('tmux', ['set-option', '-g', 'mouse', 'on'], {\n stdio: 'ignore',\n env: process.env,\n });\n spawnSync('tmux', ['set-option', '-g', 'history-limit', '200000'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Use URL args so each iframe can attach to a dedicated tmux session.\n ttydArgs.push('-a', 'tmux');\n persistenceMode = 'tmux';\n } else {\n const shell = isWindows ? 'powershell' : 'bash';\n console.warn('tmux is unavailable; falling back to non-persistent ttyd shell mode.');\n ttydArgs.push(shell);\n }\n\n const child = spawn('ttyd', ttydArgs, {\n stdio: 'ignore',\n detached: false,\n cwd: workingDir,\n env: {\n ...env,\n TERM: 'xterm-256color',\n COLORTERM: 'truecolor',\n },\n });\n\n child.on('error', (err) => {\n console.error('Failed to start ttyd:', err);\n global.ttydProcess = undefined;\n global.ttydPersistenceMode = undefined;\n });\n\n child.on('exit', () => {\n global.ttydProcess = undefined;\n global.ttydPersistenceMode = undefined;\n });\n\n global.ttydProcess = child;\n global.ttydPersistenceMode = persistenceMode;\n\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n return { success: true, persistenceMode };\n } catch (error) {\n console.error('Error starting ttyd:', error);\n return { success: false, error: 'Failed to start ttyd. Make sure ttyd is installed and in your PATH.' };\n }\n}\n\nexport async function setTmuxSessionMouseMode(\n sessionName: string,\n role: TerminalSessionRole,\n enabled: boolean\n): Promise<{ success: boolean; error?: string }> {\n if (os.platform() === 'win32') {\n return { success: true };\n }\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const hasSessionResult = spawnSync('tmux', ['has-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Session might not be created yet (e.g. hidden terminal iframe not initialized).\n // Treat this as a no-op so toggling mode remains robust.\n if (typeof hasSessionResult.status === 'number' && hasSessionResult.status !== 0) {\n return { success: true };\n }\n\n const result = spawnSync('tmux', ['set-option', '-t', tmuxSession, 'mouse', enabled ? 'on' : 'off'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n if (typeof result.status === 'number' && result.status !== 0) {\n return { success: false, error: `tmux exited with status ${result.status}` };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to set tmux mouse mode:', error);\n return { success: false, error: 'Failed to set tmux mouse mode.' };\n }\n}\n\nexport async function setTmuxSessionStatusVisibility(\n sessionName: string,\n role: TerminalSessionRole,\n visible: boolean\n): Promise<{ success: boolean; applied: boolean; error?: string }> {\n if (os.platform() === 'win32') {\n return { success: true, applied: false };\n }\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const hasSessionResult = spawnSync('tmux', ['has-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n\n // Session might not be created yet (e.g. hidden terminal iframe not initialized).\n // Treat this as a no-op so callers can retry later.\n if (typeof hasSessionResult.status === 'number' && hasSessionResult.status !== 0) {\n return { success: true, applied: false };\n }\n\n const result = spawnSync('tmux', ['set-option', '-t', tmuxSession, 'status', visible ? 'on' : 'off'], {\n stdio: 'ignore',\n env: process.env,\n });\n\n if (typeof result.status === 'number' && result.status !== 0) {\n return { success: false, applied: false, error: `tmux exited with status ${result.status}` };\n }\n\n return { success: true, applied: true };\n } catch (error) {\n console.error('Failed to set tmux session status visibility:', error);\n return { success: false, applied: false, error: 'Failed to set tmux session status visibility.' };\n }\n}\n\nexport async function terminateSessionTerminalSessions(sessionName: string): Promise<void> {\n if (os.platform() === 'win32') return;\n\n try {\n const { spawnSync } = await import('child_process');\n const tmuxExists =\n spawnSync('which', ['tmux'], {\n stdio: 'ignore',\n env: process.env,\n }).status === 0;\n\n if (!tmuxExists) return;\n\n const roles: TerminalSessionRole[] = ['agent', 'terminal'];\n for (const role of roles) {\n const tmuxSession = getTmuxSessionName(sessionName, role);\n spawnSync('tmux', ['kill-session', '-t', tmuxSession], {\n stdio: 'ignore',\n env: process.env,\n });\n }\n } catch (error) {\n console.error('Failed to terminate session terminal sessions:', error);\n }\n}\n\nexport async function prepareSessionWorktree(\n repoPath: string,\n baseBranch: string\n): Promise<{ success: boolean; sessionName?: string; worktreePath?: string; branchName?: string; error?: string }> {\n try {\n const { v4: uuidv4 } = await import('uuid');\n const shortUuid = uuidv4().split('-')[0];\n\n const date = new Date();\n const timestamp = date.toISOString().replace(/[-:]/g, '').slice(0, 8) + '-' + date.getHours().toString().padStart(2, '0') + date.getMinutes().toString().padStart(2, '0');\n const sessionName = `${timestamp}-${shortUuid}`;\n\n const branchName = `viba/${sessionName}`;\n\n const repoName = path.basename(repoPath);\n const parentDir = path.dirname(repoPath);\n\n const vibaDir = path.join(parentDir, '.viba', repoName);\n const worktreePath = path.join(vibaDir, sessionName);\n\n await fs.mkdir(vibaDir, { recursive: true });\n\n const git = simpleGit(repoPath);\n\n await git.raw(['worktree', 'add', '-b', branchName, worktreePath, baseBranch]);\n\n return {\n success: true,\n sessionName,\n worktreePath,\n branchName\n };\n } catch (e: any) {\n console.error(\"Failed to create worktree:\", e);\n return { success: false, error: e.message || String(e) };\n }\n}\n\nexport async function removeWorktree(repoPath: string, worktreePath: string, branchName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const git = simpleGit(repoPath);\n\n try {\n await git.raw(['worktree', 'remove', '--force', worktreePath]);\n } catch (e: any) {\n const errorMsg = e.message || String(e);\n if (errorMsg.includes('is not a working tree') || errorMsg.includes('not a valid path')) {\n console.warn(`Path ${worktreePath} is not a valid working tree according to git, continuing cleanup...`);\n } else {\n console.error(`Git worktree remove failed, but continuing with cleanup: ${errorMsg}`);\n }\n\n // Try to prune in case of stale worktree metadata\n try {\n await git.raw(['worktree', 'prune']);\n } catch {\n // ignore prune errors\n }\n }\n\n try {\n await git.deleteLocalBranch(branchName, true);\n } catch (e: any) {\n console.warn(`Failed to delete branch ${branchName}: ${e.message || e}`);\n }\n\n try {\n await fs.rm(worktreePath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n\n try {\n const attachmentsDir = `${worktreePath}-attachments`;\n await fs.rm(attachmentsDir, { recursive: true, force: true });\n } catch {\n // ignore\n }\n\n return { success: true };\n } catch (e: any) {\n console.error(\"Failed to cleanup worktree (critical error):\", e);\n // Even on critical error, return success: true if we want the session to be considered \"deleted\"\n // so the metadata can be removed.\n return { success: true };\n }\n}\n\nexport async function getStartupScript(repoPath: string): Promise<string> {\n try {\n const files = await fs.readdir(repoPath);\n if (files.includes('package-lock.json')) return 'npm install';\n if (files.includes('pnpm-lock.yaml')) return 'pnpm install';\n if (files.includes('yarn.lock')) return 'yarn install';\n return '';\n } catch (error) {\n console.error('Error determining startup script:', error);\n return '';\n }\n}\n\nexport async function getDefaultDevServerScript(repoPath: string): Promise<string> {\n try {\n const packageJsonPath = path.join(repoPath, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as { scripts?: Record<string, unknown> };\n const scripts = packageJson.scripts;\n\n if (!scripts || typeof scripts !== 'object') return '';\n if (typeof scripts.dev === 'string' && scripts.dev.trim()) return 'npm run dev';\n if (typeof scripts.watch === 'string' && scripts.watch.trim()) return 'npm run watch';\n if (typeof scripts.start === 'string' && scripts.start.trim()) return 'npm run start';\n\n return '';\n } catch (error: unknown) {\n const errorCode =\n typeof error === 'object' && error !== null && 'code' in error\n ? (error as { code?: string }).code\n : undefined;\n\n if (errorCode !== 'ENOENT') {\n console.error('Error determining default dev server script:', error);\n }\n return '';\n }\n}\n\nexport async function listRepoFiles(repoPath: string, query: string = ''): Promise<string[]> {\n try {\n const git = simpleGit(repoPath);\n const result = await git.raw(['ls-files']);\n const allFiles = result.split('\\n').filter(Boolean);\n\n if (!query) return allFiles.slice(0, 50);\n\n const lowerQuery = query.toLowerCase();\n return allFiles.filter(f => f.toLowerCase().includes(lowerQuery)).slice(0, 50);\n } catch (error) {\n console.error('Failed to list repo files:', error);\n return [];\n }\n}\n\nexport async function saveAttachments(worktreePath: string, formData: FormData): Promise<string[]> {\n try {\n const attachmentsDir = `${worktreePath}-attachments`;\n await fs.mkdir(attachmentsDir, { recursive: true });\n\n const files = Array.from(formData.entries());\n\n const savePromises = files.map(async ([, entry]) => {\n if (entry instanceof File) {\n const buffer = Buffer.from(await entry.arrayBuffer());\n const safeName = entry.name.replace(/[^a-zA-Z0-9._-]/g, '_');\n const fullPath = path.join(attachmentsDir, safeName);\n await fs.writeFile(fullPath, buffer);\n return safeName;\n }\n return null;\n });\n\n const results = await Promise.all(savePromises);\n return results.filter((name): name is string => name !== null);\n } catch (error) {\n console.error('Failed to save attachments:', error);\n return [];\n }\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\n\nexport interface RepoSettings {\n agentProvider?: string;\n agentModel?: string;\n startupScript?: string;\n devServerScript?: string;\n lastBranch?: string;\n credentialId?: string | null;\n credentialPreference?: 'auto' | 'github' | 'gitlab';\n}\n\nexport interface Config {\n recentRepos: string[];\n defaultRoot: string;\n selectedIde: string;\n agentWidth: number;\n repoSettings: Record<string, RepoSettings>;\n pinnedFolderShortcuts: string[];\n}\n\nconst DEFAULT_CONFIG: Config = {\n recentRepos: [],\n defaultRoot: '',\n selectedIde: 'vscode',\n agentWidth: 66.666,\n repoSettings: {},\n pinnedFolderShortcuts: [],\n};\n\nasync function getConfigPath(): Promise<string> {\n const homedir = os.homedir();\n const vibaDir = path.join(homedir, '.viba');\n try {\n await fs.mkdir(vibaDir, { recursive: true });\n } catch (error) {\n // Ignore if exists\n }\n return path.join(vibaDir, 'config.json');\n}\n\nexport async function getConfig(): Promise<Config> {\n try {\n const configPath = await getConfigPath();\n const content = await fs.readFile(configPath, 'utf-8');\n const config = JSON.parse(content);\n return { ...DEFAULT_CONFIG, ...config };\n } catch (error) {\n // Return default if file doesn't exist or is invalid\n return DEFAULT_CONFIG;\n }\n}\n\nexport async function saveConfig(config: Config): Promise<void> {\n try {\n const configPath = await getConfigPath();\n await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');\n } catch (error) {\n console.error('Failed to save config:', error);\n throw new Error('Failed to save configuration.');\n }\n}\n\nexport async function updateConfig(updates: Partial<Config>): Promise<Config> {\n const currentConfig = await getConfig();\n const newConfig = { ...currentConfig, ...updates };\n await saveConfig(newConfig);\n return newConfig;\n}\n\nexport async function updateRepoSettings(repoPath: string, updates: Partial<RepoSettings>): Promise<Config> {\n const currentConfig = await getConfig();\n const currentRepoSettings = currentConfig.repoSettings[repoPath] || {};\n\n const newConfig: Config = {\n ...currentConfig,\n repoSettings: {\n ...currentConfig.repoSettings,\n [repoPath]: { ...currentRepoSettings, ...updates },\n },\n };\n\n await saveConfig(newConfig);\n return newConfig;\n}\n","export type TerminalSessionRole = 'agent' | 'terminal';\nexport type GitRemoteProvider = 'github' | 'gitlab';\nexport type TerminalSessionEnvironment = {\n name: 'GITHUB_TOKEN' | 'GITLAB_TOKEN';\n value: string;\n};\ntype DetectGitRemoteProviderOptions = {\n gitlabHosts?: string[];\n};\n\nfunction sanitizeTmuxSessionName(value: string): string {\n const safe = value.trim().replace(/[^a-zA-Z0-9_-]/g, '-');\n return safe || 'session';\n}\n\nexport function getTmuxSessionName(sessionName: string, role: TerminalSessionRole): string {\n return `viba-${sanitizeTmuxSessionName(sessionName).slice(0, 40)}-${role}`;\n}\n\nfunction normalizeGitRemoteUrl(remoteUrl: string): string {\n const trimmed = remoteUrl.trim();\n if (!trimmed) return '';\n\n if (/^[a-z][a-z0-9+.-]*:\\/\\//i.test(trimmed)) {\n return trimmed;\n }\n\n const scpLikeMatch = trimmed.match(/^([^@]+@)?([^:]+):(.+)$/);\n if (!scpLikeMatch) {\n return '';\n }\n\n const userPart = scpLikeMatch[1] || '';\n const host = scpLikeMatch[2];\n const path = scpLikeMatch[3].replace(/^\\/+/, '');\n return `ssh://${userPart}${host}/${path}`;\n}\n\nexport function parseGitRemoteHost(remoteUrl: string): string | null {\n const normalized = normalizeGitRemoteUrl(remoteUrl);\n if (!normalized) return null;\n\n try {\n return new URL(normalized).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nfunction normalizeKnownHost(value: string): string | null {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n try {\n return new URL(trimmed).hostname.toLowerCase();\n } catch {\n // Fall through to parse as a bare host (optionally with port).\n }\n\n try {\n return new URL(`ssh://${trimmed}`).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nexport function detectGitRemoteProvider(\n remoteUrl: string,\n options?: DetectGitRemoteProviderOptions,\n): GitRemoteProvider | null {\n const host = parseGitRemoteHost(remoteUrl);\n if (!host) return null;\n\n if (host === 'github.com' || host.includes('github')) {\n return 'github';\n }\n\n if (host === 'gitlab.com' || host.includes('gitlab')) {\n return 'gitlab';\n }\n\n if (options?.gitlabHosts?.some((knownHost) => normalizeKnownHost(knownHost) === host)) {\n return 'gitlab';\n }\n\n return null;\n}\n\nexport function buildTtydTerminalSrc(\n sessionName: string,\n role: TerminalSessionRole,\n environment?: TerminalSessionEnvironment | null,\n): string {\n const tmuxSession = getTmuxSessionName(sessionName, role);\n const params = new URLSearchParams();\n params.append('arg', 'new-session');\n if (environment?.value) {\n params.append('arg', '-e');\n params.append('arg', `${environment.name}=${environment.value}`);\n }\n params.append('arg', '-A');\n params.append('arg', '-s');\n params.append('arg', tmuxSession);\n return `/terminal?${params.toString()}`;\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\nimport simpleGit from 'simple-git';\nimport { getErrorMessage } from '../../lib/error-utils';\nimport { prepareSessionWorktree, removeWorktree, terminateSessionTerminalSessions } from './git';\n\nexport type SessionMetadata = {\n sessionName: string;\n repoPath: string;\n worktreePath: string;\n branchName: string;\n baseBranch?: string;\n agent: string;\n model: string;\n title?: string;\n devServerScript?: string;\n initialized?: boolean;\n timestamp: string;\n};\n\nexport type SessionLaunchContext = {\n sessionName: string;\n title?: string;\n initialMessage?: string;\n rawInitialMessage?: string;\n startupScript?: string;\n attachmentNames?: string[];\n agentProvider?: string;\n model?: string;\n sessionMode?: 'fast' | 'plan';\n isResume?: boolean;\n timestamp: string;\n};\n\nexport type SessionPrefillContext = {\n sourceSessionName: string;\n repoPath: string;\n title?: string;\n initialMessage?: string;\n attachmentNames: string[];\n agentProvider: string;\n model: string;\n};\n\nasync function getSessionsDir(): Promise<string> {\n const homedir = os.homedir();\n const sessionsDir = path.join(homedir, '.viba', 'sessions');\n try {\n await fs.mkdir(sessionsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return sessionsDir;\n}\n\nasync function getSessionContextsDir(): Promise<string> {\n const homedir = os.homedir();\n const contextsDir = path.join(homedir, '.viba', 'session-contexts');\n try {\n await fs.mkdir(contextsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return contextsDir;\n}\n\nasync function getSessionContextFilePath(sessionName: string): Promise<string> {\n const contextsDir = await getSessionContextsDir();\n return path.join(contextsDir, `${sessionName}.json`);\n}\n\nasync function getSessionPromptsDir(): Promise<string> {\n const homedir = os.homedir();\n const promptsDir = path.join(homedir, '.viba', 'session-prompts');\n try {\n await fs.mkdir(promptsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return promptsDir;\n}\n\nexport async function saveSessionMetadata(metadata: SessionMetadata): Promise<void> {\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${metadata.sessionName}.json`);\n await fs.writeFile(filePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nexport async function writeSessionPromptFile(\n sessionName: string,\n prompt: string\n): Promise<{ success: boolean; filePath?: string; error?: string }> {\n try {\n const promptsDir = await getSessionPromptsDir();\n const filePath = path.join(promptsDir, `${sessionName}.txt`);\n await fs.writeFile(filePath, prompt, 'utf-8');\n return { success: true, filePath };\n } catch (e: unknown) {\n console.error('Failed to write session prompt file:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function saveSessionLaunchContext(\n sessionName: string,\n context: Omit<SessionLaunchContext, 'sessionName' | 'timestamp'>\n): Promise<{ success: boolean; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const contextData: SessionLaunchContext = {\n sessionName,\n ...context,\n timestamp: new Date().toISOString(),\n };\n await fs.writeFile(filePath, JSON.stringify(contextData, null, 2), 'utf-8');\n return { success: true };\n } catch (e: unknown) {\n console.error('Failed to save session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function consumeSessionLaunchContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionLaunchContext; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const content = await fs.readFile(filePath, 'utf-8');\n const context = JSON.parse(content) as SessionLaunchContext;\n return { success: true, context };\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n if (errorCode === 'ENOENT') {\n return { success: true };\n }\n console.error('Failed to consume session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nasync function getSessionLaunchContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionLaunchContext; error?: string }> {\n try {\n const filePath = await getSessionContextFilePath(sessionName);\n const content = await fs.readFile(filePath, 'utf-8');\n const context = JSON.parse(content) as SessionLaunchContext;\n return { success: true, context };\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n if (errorCode === 'ENOENT') {\n return { success: true };\n }\n console.error('Failed to read session launch context:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionPrefillContext(\n sessionName: string\n): Promise<{ success: boolean; context?: SessionPrefillContext; error?: string }> {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const launchContextResult = await getSessionLaunchContext(sessionName);\n if (!launchContextResult.success) {\n return { success: false, error: launchContextResult.error || 'Failed to load session launch context' };\n }\n\n const launchContext = launchContextResult.context;\n const prefill: SessionPrefillContext = {\n sourceSessionName: sessionName,\n repoPath: metadata.repoPath,\n title: launchContext?.title || metadata.title,\n initialMessage: launchContext?.rawInitialMessage || launchContext?.initialMessage,\n attachmentNames: launchContext?.attachmentNames || [],\n agentProvider: launchContext?.agentProvider || metadata.agent,\n model: launchContext?.model || metadata.model,\n };\n\n return { success: true, context: prefill };\n}\n\nexport async function copySessionAttachments(\n sourceSessionName: string,\n targetWorktreePath: string,\n requestedAttachmentNames: string[]\n): Promise<{ success: boolean; copiedAttachmentNames: string[]; missingAttachmentNames: string[]; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sourceSessionName);\n if (!metadata) {\n return {\n success: false,\n copiedAttachmentNames: [],\n missingAttachmentNames: [],\n error: 'Source session metadata not found',\n };\n }\n\n const sourceAttachmentsDir = `${metadata.worktreePath}-attachments`;\n const targetAttachmentsDir = `${targetWorktreePath}-attachments`;\n await fs.mkdir(targetAttachmentsDir, { recursive: true });\n\n const copiedAttachmentNames: string[] = [];\n const missingAttachmentNames: string[] = [];\n const dedupedRequestedNames = Array.from(\n new Set(requestedAttachmentNames.map((name) => name.trim()).filter(Boolean))\n );\n\n for (const name of dedupedRequestedNames) {\n const safeName = name.replace(/[^a-zA-Z0-9._-]/g, '_');\n const sourcePath = path.join(sourceAttachmentsDir, safeName);\n const targetPath = path.join(targetAttachmentsDir, safeName);\n\n try {\n await fs.copyFile(sourcePath, targetPath);\n copiedAttachmentNames.push(safeName);\n } catch (e: unknown) {\n const errorCode =\n typeof e === 'object' && e !== null && 'code' in e\n ? (e as { code?: string }).code\n : undefined;\n\n if (errorCode === 'ENOENT') {\n missingAttachmentNames.push(name);\n continue;\n }\n\n throw e;\n }\n }\n\n return { success: true, copiedAttachmentNames, missingAttachmentNames };\n } catch (e: unknown) {\n console.error('Failed to copy session attachments:', e);\n return {\n success: false,\n copiedAttachmentNames: [],\n missingAttachmentNames: [],\n error: getErrorMessage(e),\n };\n }\n}\n\nexport async function getSessionMetadata(sessionName: string): Promise<SessionMetadata | null> {\n try {\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${sessionName}.json`);\n const content = await fs.readFile(filePath, 'utf-8');\n return JSON.parse(content) as SessionMetadata;\n } catch {\n return null;\n }\n}\n\nexport async function listSessions(repoPath?: string): Promise<SessionMetadata[]> {\n try {\n const sessionsDir = await getSessionsDir();\n const entries = await fs.readdir(sessionsDir);\n\n const sessionPromises = entries\n .filter((entry) => entry.endsWith('.json'))\n .map(async (entry) => {\n try {\n const filePath = path.join(sessionsDir, entry);\n const content = await fs.readFile(filePath, 'utf-8');\n const data = JSON.parse(content) as SessionMetadata;\n return data;\n } catch (e) {\n console.error(`Failed to parse session file ${entry}:`, e);\n return null;\n }\n });\n\n const sessions = (await Promise.all(sessionPromises)).filter((s): s is SessionMetadata => {\n if (!s) return false;\n if (repoPath && s.repoPath !== repoPath) return false;\n return true;\n });\n\n // Sort by timestamp desc\n return sessions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());\n } catch (error) {\n console.error('Failed to list sessions:', error);\n return [];\n }\n}\n\nexport async function createSession(\n repoPath: string,\n baseBranch: string,\n metadata: { agent: string; model: string; title?: string; devServerScript?: string }\n): Promise<{ success: boolean; sessionName?: string; worktreePath?: string; branchName?: string; error?: string }> {\n try {\n // 1. Prepare worktree\n const result = await prepareSessionWorktree(repoPath, baseBranch);\n\n if (!result.success || !result.sessionName || !result.worktreePath || !result.branchName) {\n return result;\n }\n\n // 2. Save metadata\n const sessionData: SessionMetadata = {\n sessionName: result.sessionName,\n repoPath,\n worktreePath: result.worktreePath,\n branchName: result.branchName,\n baseBranch,\n agent: metadata.agent,\n model: metadata.model,\n title: metadata.title,\n devServerScript: metadata.devServerScript,\n initialized: false,\n timestamp: new Date().toISOString(),\n };\n\n await saveSessionMetadata(sessionData);\n\n return result;\n } catch (e: unknown) {\n console.error(\"Failed to create session:\", e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function markSessionInitialized(sessionName: string): Promise<void> {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) return;\n if (metadata.initialized) return;\n\n metadata.initialized = true;\n await saveSessionMetadata(metadata);\n}\n\nexport async function deleteSession(sessionName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n // 1. Remove worktree\n const result = await removeWorktree(metadata.repoPath, metadata.worktreePath, metadata.branchName);\n await terminateSessionTerminalSessions(sessionName);\n if (!result.success) {\n return result;\n }\n\n // 2. Delete metadata file\n const sessionsDir = await getSessionsDir();\n const filePath = path.join(sessionsDir, `${sessionName}.json`);\n await fs.rm(filePath, { force: true });\n const contextFilePath = await getSessionContextFilePath(sessionName);\n await fs.rm(contextFilePath, { force: true });\n\n // 3. Delete prompt file\n const promptsDir = await getSessionPromptsDir();\n const promptFilePath = path.join(promptsDir, `${sessionName}.txt`);\n await fs.rm(promptFilePath, { force: true });\n\n return { success: true };\n } catch (e: unknown) {\n console.error(\"Failed to delete session:\", e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function deleteSessionInBackground(sessionName: string): Promise<{ success: boolean; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n // Resolve immediately but continue cleanup in the background.\n // This allows the client to navigate away without the request being cancelled.\n void deleteSession(sessionName).catch((error) => {\n console.error(`Background cleanup of session ${sessionName} failed:`, error);\n });\n\n return { success: true };\n } catch (e: unknown) {\n console.error('Failed to schedule background session deletion:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function mergeSessionToBase(\n sessionName: string\n): Promise<{ success: boolean; branchName?: string; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return {\n success: false,\n error: 'Base branch is missing for this session. This session may be from an older version.',\n };\n }\n\n const worktreeGit = simpleGit(metadata.worktreePath);\n const worktreeStatus = await worktreeGit.status();\n if (!worktreeStatus.isClean()) {\n return {\n success: false,\n error: 'Worktree has uncommitted changes. Commit your changes first.',\n };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const originalBranch = branchSummary.current;\n if (originalBranch !== baseBranch) {\n await git.checkout(baseBranch);\n }\n\n // Always create a merge commit record instead of fast-forwarding.\n await git.merge(['--no-ff', metadata.branchName]);\n\n if (originalBranch && originalBranch !== baseBranch) {\n await git.checkout(originalBranch);\n }\n\n return {\n success: true,\n branchName: metadata.branchName,\n baseBranch,\n };\n } catch (e: unknown) {\n console.error('Failed to merge session branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function rebaseSessionOntoBase(\n sessionName: string\n): Promise<{ success: boolean; branchName?: string; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return {\n success: false,\n error: 'Base branch is missing for this session. This session may be from an older version.',\n };\n }\n\n const worktreeGit = simpleGit(metadata.worktreePath);\n const worktreeStatus = await worktreeGit.status();\n if (!worktreeStatus.isClean()) {\n return {\n success: false,\n error: 'Worktree has uncommitted changes. Commit your changes first.',\n };\n }\n\n const repoGit = simpleGit(metadata.repoPath);\n const branchSummary = await repoGit.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const worktreeBranchSummary = await worktreeGit.branchLocal();\n if (worktreeBranchSummary.current !== metadata.branchName) {\n await worktreeGit.checkout(metadata.branchName);\n }\n\n await worktreeGit.rebase([baseBranch]);\n\n return {\n success: true,\n branchName: metadata.branchName,\n baseBranch,\n };\n } catch (e: unknown) {\n console.error('Failed to rebase session branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionUncommittedFileCount(\n sessionName: string\n): Promise<{ success: boolean; count?: number; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const git = simpleGit(metadata.worktreePath);\n const status = await git.status();\n\n return { success: true, count: status.files.length };\n } catch (e: unknown) {\n console.error('Failed to get uncommitted file count:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function getSessionDivergence(\n sessionName: string\n): Promise<{ success: boolean; ahead?: number; behind?: number; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const baseBranch = metadata.baseBranch?.trim();\n if (!baseBranch) {\n return { success: false, error: 'Base branch is unavailable for this session.' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(baseBranch)) {\n return { success: false, error: `Base branch \"${baseBranch}\" not found in repository.` };\n }\n if (!branchSummary.all.includes(metadata.branchName)) {\n return { success: false, error: `Session branch \"${metadata.branchName}\" not found in repository.` };\n }\n\n const rawCounts = await git.raw(['rev-list', '--left-right', '--count', `${baseBranch}...${metadata.branchName}`]);\n const [behindRaw, aheadRaw] = rawCounts.trim().split(/\\s+/);\n const behind = Number.parseInt(behindRaw, 10);\n const ahead = Number.parseInt(aheadRaw, 10);\n\n if (Number.isNaN(behind) || Number.isNaN(ahead)) {\n return { success: false, error: 'Failed to parse git divergence output.' };\n }\n\n return { success: true, ahead, behind };\n } catch (e: unknown) {\n console.error('Failed to get session divergence:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function listSessionBaseBranches(\n sessionName: string\n): Promise<{ success: boolean; baseBranch?: string; branches?: string[]; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n const branches = [...branchSummary.all].sort((a, b) => a.localeCompare(b));\n const baseBranch = metadata.baseBranch?.trim();\n\n return { success: true, baseBranch, branches };\n } catch (e: unknown) {\n console.error('Failed to list session base branches:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n\nexport async function updateSessionBaseBranch(\n sessionName: string,\n baseBranch: string\n): Promise<{ success: boolean; baseBranch?: string; error?: string }> {\n try {\n const metadata = await getSessionMetadata(sessionName);\n if (!metadata) {\n return { success: false, error: 'Session metadata not found' };\n }\n\n const nextBaseBranch = baseBranch.trim();\n if (!nextBaseBranch) {\n return { success: false, error: 'Base branch cannot be empty.' };\n }\n\n const git = simpleGit(metadata.repoPath);\n const branchSummary = await git.branchLocal();\n if (!branchSummary.all.includes(nextBaseBranch)) {\n return { success: false, error: `Base branch \"${nextBaseBranch}\" not found in repository.` };\n }\n\n metadata.baseBranch = nextBaseBranch;\n await saveSessionMetadata(metadata);\n\n return { success: true, baseBranch: nextBaseBranch };\n } catch (e: unknown) {\n console.error('Failed to update session base branch:', e);\n return { success: false, error: getErrorMessage(e) };\n }\n}\n"],"names":["Buffer","trimmed","ExitCodes","commands","parser","parsers","CheckRepoActions","CleanOptions","append","GitConfigScope","DiffNameStatus","ResetMode","debug","onError","excludeOptions","disallowedCommand","GitExecutor","SimpleGitApi","Scheduler","configurationErrorTask","asArray","filterArray","filterPrimitives","filterString","filterStringOrStringArray","filterType","getTrailingOptions","trailingFunctionArgument","trailingOptionsArgument","applyPatchTask","branchTask","branchLocalTask","deleteBranchesTask","deleteBranchTask","checkIgnoreTask","checkIsRepoTask","cloneTask","cloneMirrorTask","cleanWithOptionsTask","isCleanOptionsArray","diffSummaryTask","fetchTask","moveTask","pullTask","pushTagsTask","addRemoteTask","getRemotesTask","listRemotesTask","remoteTask","removeRemoteTask","getResetMode","resetTask","stashListTask","addSubModuleTask","initSubModuleTask","subModuleTask","updateSubModuleTask","addAnnotatedTagTask","addTagTask","tagListTask","straightThroughBufferTask","straightThroughStringTask","Git","input","plugin","git","args"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6]}
|