"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.expandPath = expandPath;exports.resolveReadPath = resolveReadPath;exports.resolveToCwd = resolveToCwd;var _nodeFs = require("node:fs"); var os = _interopRequireWildcard(require("node:os")); var _nodePath = require("node:path");function _interopRequireWildcard(e, t) {if ("function" == typeof WeakMap) var r = new WeakMap(),n = new WeakMap();return (_interopRequireWildcard = function (e, t) {if (!t && e && e.__esModule) return e;var o,i,f = { __proto__: null, default: e };if (null === e || "object" != typeof e && "function" != typeof e) return f;if (o = t ? n : r) {if (o.has(e)) return o.get(e);o.set(e, f);}for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);return f;})(e, t);} const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g; const NARROW_NO_BREAK_SPACE = "\u202F"; function normalizeUnicodeSpaces(str) { return str.replace(UNICODE_SPACES, " "); } function tryMacOSScreenshotPath(filePath) { return filePath.replace(/ (AM|PM)\./g, `${NARROW_NO_BREAK_SPACE}$1.`); } function tryNFDVariant(filePath) { // macOS stores filenames in NFD (decomposed) form, try converting user input to NFD return filePath.normalize("NFD"); } function tryCurlyQuoteVariant(filePath) { // macOS uses U+2019 (right single quotation mark) in screenshot names like "Capture d'écran" // Users typically type U+0027 (straight apostrophe) return filePath.replace(/'/g, "\u2019"); } function fileExists(filePath) { try { (0, _nodeFs.accessSync)(filePath, _nodeFs.constants.F_OK); return true; } catch { return false; } } function normalizeAtPrefix(filePath) { return filePath.startsWith("@") ? filePath.slice(1) : filePath; } function expandPath(filePath) { const normalized = normalizeUnicodeSpaces(normalizeAtPrefix(filePath)); if (normalized === "~") { return os.homedir(); } if (normalized.startsWith("~/")) { return os.homedir() + normalized.slice(1); } return normalized; } /** * Resolve a path relative to the given cwd. * Handles ~ expansion and absolute paths. */ function resolveToCwd(filePath, cwd) { const expanded = expandPath(filePath); if ((0, _nodePath.isAbsolute)(expanded)) { return expanded; } return (0, _nodePath.resolve)(cwd, expanded); } function resolveReadPath(filePath, cwd) { const resolved = resolveToCwd(filePath, cwd); if (fileExists(resolved)) { return resolved; } // Try macOS AM/PM variant (narrow no-break space before AM/PM) const amPmVariant = tryMacOSScreenshotPath(resolved); if (amPmVariant !== resolved && fileExists(amPmVariant)) { return amPmVariant; } // Try NFD variant (macOS stores filenames in NFD form) const nfdVariant = tryNFDVariant(resolved); if (nfdVariant !== resolved && fileExists(nfdVariant)) { return nfdVariant; } // Try curly quote variant (macOS uses U+2019 in screenshot names) const curlyVariant = tryCurlyQuoteVariant(resolved); if (curlyVariant !== resolved && fileExists(curlyVariant)) { return curlyVariant; } // Try combined NFD + curly quote (for French macOS screenshots like "Capture d'écran") const nfdCurlyVariant = tryCurlyQuoteVariant(nfdVariant); if (nfdCurlyVariant !== resolved && fileExists(nfdCurlyVariant)) { return nfdCurlyVariant; } return resolved; } /* v9-c84dfd58c06eae49 */