@visulima/fs 2.1.4 → 2.1.5
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/CHANGELOG.md +10 -0
- package/dist/{chunk-7RPH4IPR.js → chunk-ELTI4L4F.js} +1 -1
- package/dist/{chunk-7RPH4IPR.js.map → chunk-ELTI4L4F.js.map} +1 -1
- package/dist/{chunk-7EWY5DJ5.cjs → chunk-NEXEUEQV.cjs} +1 -1
- package/dist/{chunk-7EWY5DJ5.cjs.map → chunk-NEXEUEQV.cjs.map} +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.js +1 -1
- package/dist/utils.cjs +4 -4
- package/dist/utils.js +1 -1
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## @visulima/fs [2.1.5](https://github.com/visulima/visulima/compare/@visulima/fs@2.1.4...@visulima/fs@2.1.5) (2024-06-11)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **fs:** updated type-fest to v4.20.0 ([b34f417](https://github.com/visulima/visulima/commit/b34f417537b209f4c411103b6eef0e5a6d9b947d))
|
|
6
|
+
|
|
7
|
+
### Build System
|
|
8
|
+
|
|
9
|
+
* fixed found audit error, updated all dev package deps, updated deps in apps and examples ([4c51950](https://github.com/visulima/visulima/commit/4c519500dc5504579d35725572920658999885cb))
|
|
10
|
+
|
|
1
11
|
## @visulima/fs [2.1.4](https://github.com/visulima/visulima/compare/@visulima/fs@2.1.3...@visulima/fs@2.1.4) (2024-06-06)
|
|
2
12
|
|
|
3
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/assert-valid-file-or-directory-path.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/util/normalize-lf.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/util/process.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/code-frame/get-marker-lines.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/code-frame/index.ts","../src/utils/parse-json.ts","../src/utils/assert-valid-file-contents.ts"],"names":["assertValidFileOrDirectoryPath","fileOrDirectoryPath","assert_valid_file_or_directory_path_default","normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","a","u","e","m","o","n","i","f","get_marker_lines_default","$","S","W","M","options","L","config","t","value","hasColumns","g","r","x","s","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers","CODE_FRAME_POINTER","h","k","d","getCodePoint","character","generateCodeFrame","location","q","getErrorLocation","message","match","column","F","addCodePointToUnexpectedToken","_","_quote","token","parseJson","string","reviver","fileName","error","jsonError","json_error_default","parse_json_default","assertValidFileContents","contents","assert_valid_file_contents_default"],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileOrDirectoryPath = (fileOrDirectoryPath: any): void => {\n if (!fileOrDirectoryPath || (!(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== \"string\")) {\n throw new TypeError(\"Path must be a non-empty string or URL.\");\n }\n};\n\nexport default assertValidFileOrDirectoryPath;\n","const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"./types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\nimport type { CodeFrameNodeLocation, CodeFrameOptions } from \"./types\";\n\nexport const CODE_FRAME_POINTER = process.platform === \"win32\" && !process.env?.WT_SESSION ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options?: CodeFrameOptions,\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n tabWidth: 4,\n ...options,\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options?.color,\n },\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n let lines = normalizeLF(source).split(\"\\n\");\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof config?.tabWidth === \"number\") {\n lines = lines.map((ln) => ln.replaceAll(\"\\t\", \" \".repeat(config.tabWidth as number)));\n }\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n const { gutter: colorizeGutter, marker: colorizeMarker, message: colorizeMessage } = config.color;\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(CODE_FRAME_POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameLocation, CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n","/**\n * A modified version of `parse-json` from `https://github.com/sindresorhus/parse-json/blob/main/index.js`\n *\n * MIT License\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { codeFrame, indexToLineColumn } from \"@visulima/error\";\nimport type { JsonValue } from \"type-fest\";\n\nimport JsonError from \"../error/json-error\";\nimport type { CodeFrameLocation, CodeFrameOptions, JsonReviver } from \"../types\";\n\nconst getCodePoint = (character: string): string => `\\\\u{${(character.codePointAt(0) as number).toString(16)}}`;\n\nconst generateCodeFrame = (source: string, location: CodeFrameLocation, options?: CodeFrameOptions) =>\n codeFrame(\n source,\n { start: location },\n {\n tabWidth: false,\n ...options,\n },\n );\n\nconst getErrorLocation = (source: string, message: string): CodeFrameLocation | undefined => {\n // eslint-disable-next-line security/detect-unsafe-regex\n const match = /in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/.exec(message);\n\n if (!match) {\n return undefined;\n }\n\n // eslint-disable-next-line prefer-const\n let { column, index, line } = match.groups as { column?: string; index: number | string; line?: string };\n\n if (line && column) {\n return { column: Number(column), line: Number(line) };\n }\n\n index = Number(index);\n\n // The error location can be out of bounds.\n if (index === source.length) {\n index = source.length - 1;\n }\n\n return indexToLineColumn(source, index);\n};\n\nconst addCodePointToUnexpectedToken = (message: string): string =>\n message.replace(\n // TODO[engine:node@>=20]: The token always quoted after Node.js 20\n // eslint-disable-next-line regexp/no-potentially-useless-backreference\n /(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\n (_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n );\n\nfunction parseJson<T = JsonValue>(string: string, filename?: string, options?: CodeFrameOptions): T;\nfunction parseJson<T = JsonValue>(string: string, reviver: JsonReviver, fileName?: string, options?: CodeFrameOptions): T;\n// eslint-disable-next-line func-style\nfunction parseJson<T = JsonValue>(string: string, reviver?: JsonReviver | string, fileName?: CodeFrameOptions | string, options?: CodeFrameOptions): T {\n if (typeof reviver === \"string\") {\n if (typeof fileName === \"object\") {\n // eslint-disable-next-line no-param-reassign\n options = fileName;\n }\n\n // eslint-disable-next-line no-param-reassign\n fileName = reviver;\n // eslint-disable-next-line no-param-reassign\n reviver = undefined;\n }\n\n let message: string;\n\n try {\n return JSON.parse(string, reviver);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n message = error.message;\n }\n\n let location: CodeFrameLocation | undefined;\n\n if (string) {\n location = getErrorLocation(string, message);\n message = addCodePointToUnexpectedToken(message);\n } else {\n message += \" while parsing empty string\";\n }\n\n const jsonError = new JsonError(message);\n\n jsonError.fileName = fileName as string;\n\n if (location) {\n jsonError.codeFrame = generateCodeFrame(string, location, options);\n }\n\n throw jsonError;\n}\n\nexport default parseJson;\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileContents = (contents: any): void => {\n if (typeof contents !== \"string\" && !(contents instanceof ArrayBuffer) && !ArrayBuffer.isView(contents)) {\n throw new TypeError(\"File contents must be a string, ArrayBuffer, or ArrayBuffer view.\");\n }\n};\n\nexport default assertValidFileContents;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/assert-valid-file-or-directory-path.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/util/normalize-lf.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/util/process.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/code-frame/get-marker-lines.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/code-frame/index.ts","../src/utils/parse-json.ts","../src/utils/assert-valid-file-contents.ts"],"names":["assertValidFileOrDirectoryPath","fileOrDirectoryPath","assert_valid_file_or_directory_path_default","normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","a","u","e","m","o","n","i","f","get_marker_lines_default","$","S","W","M","options","L","config","t","value","hasColumns","g","r","x","s","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers","CODE_FRAME_POINTER","h","k","d","getCodePoint","character","generateCodeFrame","location","q","getErrorLocation","message","match","column","F","addCodePointToUnexpectedToken","_","_quote","token","parseJson","string","reviver","fileName","error","jsonError","json_error_default","parse_json_default","assertValidFileContents","contents","assert_valid_file_contents_default"],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileOrDirectoryPath = (fileOrDirectoryPath: any): void => {\n if (!fileOrDirectoryPath || (!(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== \"string\")) {\n throw new TypeError(\"Path must be a non-empty string or URL.\");\n }\n};\n\nexport default assertValidFileOrDirectoryPath;\n","const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"./types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\nimport type { CodeFrameNodeLocation, CodeFrameOptions } from \"./types\";\n\nexport const CODE_FRAME_POINTER = process.platform === \"win32\" && !process.env?.WT_SESSION ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options?: CodeFrameOptions,\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n tabWidth: 4,\n ...options,\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options?.color,\n },\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n let lines = normalizeLF(source).split(\"\\n\");\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof config?.tabWidth === \"number\") {\n lines = lines.map((ln) => ln.replaceAll(\"\\t\", \" \".repeat(config.tabWidth as number)));\n }\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n const { gutter: colorizeGutter, marker: colorizeMarker, message: colorizeMessage } = config.color;\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(CODE_FRAME_POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameLocation, CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n","/**\n * A modified version of `parse-json` from `https://github.com/sindresorhus/parse-json/blob/main/index.js`\n *\n * MIT License\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { codeFrame, indexToLineColumn } from \"@visulima/error\";\nimport type { JsonValue } from \"type-fest\";\n\nimport JsonError from \"../error/json-error\";\nimport type { CodeFrameLocation, CodeFrameOptions, JsonReviver } from \"../types\";\n\nconst getCodePoint = (character: string): string => `\\\\u{${(character.codePointAt(0) as number).toString(16)}}`;\n\nconst generateCodeFrame = (source: string, location: CodeFrameLocation, options?: CodeFrameOptions) =>\n codeFrame(\n source,\n { start: location },\n {\n tabWidth: false,\n ...options,\n },\n );\n\nconst getErrorLocation = (source: string, message: string): CodeFrameLocation | undefined => {\n // eslint-disable-next-line security/detect-unsafe-regex\n const match = /in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/.exec(message);\n\n if (!match) {\n return undefined;\n }\n\n // eslint-disable-next-line prefer-const\n let { column, index, line } = match.groups as { column?: string; index: number | string; line?: string };\n\n if (line && column) {\n return { column: Number(column), line: Number(line) };\n }\n\n index = Number(index);\n\n // The error location can be out of bounds.\n if (index === source.length) {\n index = source.length - 1;\n }\n\n return indexToLineColumn(source, index);\n};\n\nconst addCodePointToUnexpectedToken = (message: string): string =>\n message.replace(\n // TODO[engine:node@>=20]: The token always quoted after Node.js 20\n // eslint-disable-next-line regexp/no-potentially-useless-backreference\n /(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\n (_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n );\n\nfunction parseJson<T = JsonValue>(string: string, filename?: string, options?: CodeFrameOptions): T;\nfunction parseJson<T = JsonValue>(string: string, reviver: JsonReviver, fileName?: string, options?: CodeFrameOptions): T;\n// eslint-disable-next-line func-style\nfunction parseJson<T = JsonValue>(string: string, reviver?: JsonReviver | string, fileName?: CodeFrameOptions | string, options?: CodeFrameOptions): T {\n if (typeof reviver === \"string\") {\n if (typeof fileName === \"object\") {\n // eslint-disable-next-line no-param-reassign\n options = fileName;\n }\n\n // eslint-disable-next-line no-param-reassign\n fileName = reviver;\n // eslint-disable-next-line no-param-reassign\n reviver = undefined;\n }\n\n let message: string;\n\n try {\n return JSON.parse(string, reviver);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n message = error.message;\n }\n\n let location: CodeFrameLocation | undefined;\n\n if (string) {\n location = getErrorLocation(string, message);\n message = addCodePointToUnexpectedToken(message);\n } else {\n message += \" while parsing empty string\";\n }\n\n const jsonError = new JsonError(message);\n\n jsonError.fileName = fileName as string;\n\n if (location) {\n jsonError.codeFrame = generateCodeFrame(string, location, options);\n }\n\n throw jsonError;\n}\n\nexport default parseJson;\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileContents = (contents: any): void => {\n if (typeof contents !== \"string\" && !(contents instanceof ArrayBuffer) && !ArrayBuffer.isView(contents)) {\n throw new TypeError(\"File contents must be a string, ArrayBuffer, or ArrayBuffer view.\");\n }\n};\n\nexport default assertValidFileContents;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/assert-valid-file-or-directory-path.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/util/normalize-lf.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/util/process.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/code-frame/get-marker-lines.ts","../../../node_modules/.pnpm/@visulima+error@3.2.10/node_modules/@visulima/error/src/code-frame/index.ts","../src/utils/parse-json.ts","../src/utils/assert-valid-file-contents.ts"],"names":["assertValidFileOrDirectoryPath","fileOrDirectoryPath","assert_valid_file_or_directory_path_default","normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","a","u","e","m","o","n","i","f","get_marker_lines_default","$","S","W","M","options","L","config","t","value","hasColumns","g","r","x","s","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers","CODE_FRAME_POINTER","h","k","d","getCodePoint","character","generateCodeFrame","location","q","getErrorLocation","message","match","column","F","addCodePointToUnexpectedToken","_","_quote","token","parseJson","string","reviver","fileName","error","jsonError","json_error_default","parse_json_default","assertValidFileContents","contents","assert_valid_file_contents_default"],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileOrDirectoryPath = (fileOrDirectoryPath: any): void => {\n if (!fileOrDirectoryPath || (!(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== \"string\")) {\n throw new TypeError(\"Path must be a non-empty string or URL.\");\n }\n};\n\nexport default assertValidFileOrDirectoryPath;\n","const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"./types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\nimport type { CodeFrameNodeLocation, CodeFrameOptions } from \"./types\";\n\nexport const CODE_FRAME_POINTER = process.platform === \"win32\" && !process.env?.WT_SESSION ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options?: CodeFrameOptions,\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n tabWidth: 4,\n ...options,\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options?.color,\n },\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n let lines = normalizeLF(source).split(\"\\n\");\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof config?.tabWidth === \"number\") {\n lines = lines.map((ln) => ln.replaceAll(\"\\t\", \" \".repeat(config.tabWidth as number)));\n }\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n const { gutter: colorizeGutter, marker: colorizeMarker, message: colorizeMessage } = config.color;\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(CODE_FRAME_POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameLocation, CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n","/**\n * A modified version of `parse-json` from `https://github.com/sindresorhus/parse-json/blob/main/index.js`\n *\n * MIT License\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { codeFrame, indexToLineColumn } from \"@visulima/error\";\nimport type { JsonValue } from \"type-fest\";\n\nimport JsonError from \"../error/json-error\";\nimport type { CodeFrameLocation, CodeFrameOptions, JsonReviver } from \"../types\";\n\nconst getCodePoint = (character: string): string => `\\\\u{${(character.codePointAt(0) as number).toString(16)}}`;\n\nconst generateCodeFrame = (source: string, location: CodeFrameLocation, options?: CodeFrameOptions) =>\n codeFrame(\n source,\n { start: location },\n {\n tabWidth: false,\n ...options,\n },\n );\n\nconst getErrorLocation = (source: string, message: string): CodeFrameLocation | undefined => {\n // eslint-disable-next-line security/detect-unsafe-regex\n const match = /in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/.exec(message);\n\n if (!match) {\n return undefined;\n }\n\n // eslint-disable-next-line prefer-const\n let { column, index, line } = match.groups as { column?: string; index: number | string; line?: string };\n\n if (line && column) {\n return { column: Number(column), line: Number(line) };\n }\n\n index = Number(index);\n\n // The error location can be out of bounds.\n if (index === source.length) {\n index = source.length - 1;\n }\n\n return indexToLineColumn(source, index);\n};\n\nconst addCodePointToUnexpectedToken = (message: string): string =>\n message.replace(\n // TODO[engine:node@>=20]: The token always quoted after Node.js 20\n // eslint-disable-next-line regexp/no-potentially-useless-backreference\n /(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\n (_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n );\n\nfunction parseJson<T = JsonValue>(string: string, filename?: string, options?: CodeFrameOptions): T;\nfunction parseJson<T = JsonValue>(string: string, reviver: JsonReviver, fileName?: string, options?: CodeFrameOptions): T;\n// eslint-disable-next-line func-style\nfunction parseJson<T = JsonValue>(string: string, reviver?: JsonReviver | string, fileName?: CodeFrameOptions | string, options?: CodeFrameOptions): T {\n if (typeof reviver === \"string\") {\n if (typeof fileName === \"object\") {\n // eslint-disable-next-line no-param-reassign\n options = fileName;\n }\n\n // eslint-disable-next-line no-param-reassign\n fileName = reviver;\n // eslint-disable-next-line no-param-reassign\n reviver = undefined;\n }\n\n let message: string;\n\n try {\n return JSON.parse(string, reviver);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n message = error.message;\n }\n\n let location: CodeFrameLocation | undefined;\n\n if (string) {\n location = getErrorLocation(string, message);\n message = addCodePointToUnexpectedToken(message);\n } else {\n message += \" while parsing empty string\";\n }\n\n const jsonError = new JsonError(message);\n\n jsonError.fileName = fileName as string;\n\n if (location) {\n jsonError.codeFrame = generateCodeFrame(string, location, options);\n }\n\n throw jsonError;\n}\n\nexport default parseJson;\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileContents = (contents: any): void => {\n if (typeof contents !== \"string\" && !(contents instanceof ArrayBuffer) && !ArrayBuffer.isView(contents)) {\n throw new TypeError(\"File contents must be a string, ArrayBuffer, or ArrayBuffer view.\");\n }\n};\n\nexport default assertValidFileContents;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/assert-valid-file-or-directory-path.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/util/normalize-lf.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/util/process.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/code-frame/get-marker-lines.ts","../../../node_modules/.pnpm/@visulima+error@3.2.11/node_modules/@visulima/error/src/code-frame/index.ts","../src/utils/parse-json.ts","../src/utils/assert-valid-file-contents.ts"],"names":["assertValidFileOrDirectoryPath","fileOrDirectoryPath","assert_valid_file_or_directory_path_default","normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","a","u","e","m","o","n","i","f","get_marker_lines_default","$","S","W","M","options","L","config","t","value","hasColumns","g","r","x","s","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers","CODE_FRAME_POINTER","h","k","d","getCodePoint","character","generateCodeFrame","location","q","getErrorLocation","message","match","column","F","addCodePointToUnexpectedToken","_","_quote","token","parseJson","string","reviver","fileName","error","jsonError","json_error_default","parse_json_default","assertValidFileContents","contents","assert_valid_file_contents_default"],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileOrDirectoryPath = (fileOrDirectoryPath: any): void => {\n if (!fileOrDirectoryPath || (!(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== \"string\")) {\n throw new TypeError(\"Path must be a non-empty string or URL.\");\n }\n};\n\nexport default assertValidFileOrDirectoryPath;\n","const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"./types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\nimport type { CodeFrameNodeLocation, CodeFrameOptions } from \"./types\";\n\nexport const CODE_FRAME_POINTER = process.platform === \"win32\" && !process.env?.WT_SESSION ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options?: CodeFrameOptions,\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n tabWidth: 4,\n ...options,\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options?.color,\n },\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n let lines = normalizeLF(source).split(\"\\n\");\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof config?.tabWidth === \"number\") {\n lines = lines.map((ln) => ln.replaceAll(\"\\t\", \" \".repeat(config.tabWidth as number)));\n }\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n const { gutter: colorizeGutter, marker: colorizeMarker, message: colorizeMessage } = config.color;\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(CODE_FRAME_POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameLocation, CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n","/**\n * A modified version of `parse-json` from `https://github.com/sindresorhus/parse-json/blob/main/index.js`\n *\n * MIT License\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { codeFrame, indexToLineColumn } from \"@visulima/error\";\nimport type { JsonValue } from \"type-fest\";\n\nimport JsonError from \"../error/json-error\";\nimport type { CodeFrameLocation, CodeFrameOptions, JsonReviver } from \"../types\";\n\nconst getCodePoint = (character: string): string => `\\\\u{${(character.codePointAt(0) as number).toString(16)}}`;\n\nconst generateCodeFrame = (source: string, location: CodeFrameLocation, options?: CodeFrameOptions) =>\n codeFrame(\n source,\n { start: location },\n {\n tabWidth: false,\n ...options,\n },\n );\n\nconst getErrorLocation = (source: string, message: string): CodeFrameLocation | undefined => {\n // eslint-disable-next-line security/detect-unsafe-regex\n const match = /in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/.exec(message);\n\n if (!match) {\n return undefined;\n }\n\n // eslint-disable-next-line prefer-const\n let { column, index, line } = match.groups as { column?: string; index: number | string; line?: string };\n\n if (line && column) {\n return { column: Number(column), line: Number(line) };\n }\n\n index = Number(index);\n\n // The error location can be out of bounds.\n if (index === source.length) {\n index = source.length - 1;\n }\n\n return indexToLineColumn(source, index);\n};\n\nconst addCodePointToUnexpectedToken = (message: string): string =>\n message.replace(\n // TODO[engine:node@>=20]: The token always quoted after Node.js 20\n // eslint-disable-next-line regexp/no-potentially-useless-backreference\n /(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\n (_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n );\n\nfunction parseJson<T = JsonValue>(string: string, filename?: string, options?: CodeFrameOptions): T;\nfunction parseJson<T = JsonValue>(string: string, reviver: JsonReviver, fileName?: string, options?: CodeFrameOptions): T;\n// eslint-disable-next-line func-style\nfunction parseJson<T = JsonValue>(string: string, reviver?: JsonReviver | string, fileName?: CodeFrameOptions | string, options?: CodeFrameOptions): T {\n if (typeof reviver === \"string\") {\n if (typeof fileName === \"object\") {\n // eslint-disable-next-line no-param-reassign\n options = fileName;\n }\n\n // eslint-disable-next-line no-param-reassign\n fileName = reviver;\n // eslint-disable-next-line no-param-reassign\n reviver = undefined;\n }\n\n let message: string;\n\n try {\n return JSON.parse(string, reviver);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n message = error.message;\n }\n\n let location: CodeFrameLocation | undefined;\n\n if (string) {\n location = getErrorLocation(string, message);\n message = addCodePointToUnexpectedToken(message);\n } else {\n message += \" while parsing empty string\";\n }\n\n const jsonError = new JsonError(message);\n\n jsonError.fileName = fileName as string;\n\n if (location) {\n jsonError.codeFrame = generateCodeFrame(string, location, options);\n }\n\n throw jsonError;\n}\n\nexport default parseJson;\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nconst assertValidFileContents = (contents: any): void => {\n if (typeof contents !== \"string\" && !(contents instanceof ArrayBuffer) && !ArrayBuffer.isView(contents)) {\n throw new TypeError(\"File contents must be a string, ArrayBuffer, or ArrayBuffer view.\");\n }\n};\n\nexport default assertValidFileContents;\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkBZXQ545V_cjs = require('./chunk-BZXQ545V.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkNEXEUEQV_cjs = require('./chunk-NEXEUEQV.cjs');
|
|
5
5
|
require('./chunk-N5NZURYL.cjs');
|
|
6
6
|
var promises = require('fs/promises');
|
|
7
7
|
var fs = require('fs');
|
|
@@ -11,9 +11,9 @@ var process$1 = require('process');
|
|
|
11
11
|
var zlib = require('zlib');
|
|
12
12
|
var yaml = require('yaml');
|
|
13
13
|
|
|
14
|
-
var O=0,k=4,xt=2,Ft=1,T=Symbol("findUpStop");var u=t=>{if(t.isFile())return "file";if(t.isDirectory())return "dir";if(t.isSymbolicLink())return "symlink"};var bt=async t=>{
|
|
14
|
+
var O=0,k=4,xt=2,Ft=1,T=Symbol("findUpStop");var u=t=>{if(t.isFile())return "file";if(t.isDirectory())return "dir";if(t.isSymbolicLink())return "symlink"};var bt=async t=>{chunkNEXEUEQV_cjs.a(t);try{let e=await promises.lstat(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${u(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{await promises.mkdir(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=await promises.lstat(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${u(r)}'`)}},R=bt;var kt=t=>{chunkNEXEUEQV_cjs.a(t);try{let e=fs.lstatSync(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${u(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{fs.mkdirSync(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=fs.lstatSync(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${u(r)}'`)}},x=kt;var Ut=async t=>{chunkNEXEUEQV_cjs.a(t);try{let e=await promises.lstat(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${u(e)}'`)}catch(e){if(e.code==="ENOENT"){await R(path.dirname(utils.toPath(t))),await promises.writeFile(t,new Uint8Array);return}throw e}},It=Ut;var _t=t=>{chunkNEXEUEQV_cjs.a(t);try{let e=fs.lstatSync(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${u(e)}'`)}catch(e){if(e.code==="ENOENT"){x(path.dirname(utils.toPath(t))),fs.writeFileSync(t,new Uint8Array);return}throw e}},Vt=_t;var $t=(t,e)=>!!e.ino&&!!e.dev&&e.ino===t.ino&&e.dev===t.dev,g=$t;var zt=async(t,e)=>{chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.a(e),t=path.toNamespacedPath(utils.toPath(t)),e=path.toNamespacedPath(utils.toPath(e));let r;try{r=await promises.lstat(e);}catch{}let o;try{o=await promises.lstat(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&g(o,r)||(await R(path.dirname(e)),await promises.link(t,e));},Kt=zt;var Bt=(t,e)=>{chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.a(e),t=path.toNamespacedPath(utils.toPath(t)),e=path.toNamespacedPath(utils.toPath(e));let r;try{r=fs.lstatSync(e);}catch{}let o;try{o=fs.lstatSync(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&g(o,r)||(x(path.dirname(e)),fs.linkSync(t,e));},Xt=Bt;var Gt=(t,e)=>typeof t!="string"?t:t.startsWith("./")?path.resolve(t):typeof e=="string"?path.resolve(path.dirname(e),t):new URL(t,e),$=Gt;var ee=process.platform==="win32"||/^(?:msys|cygwin)$/.test(process.env.OSTYPE),re=async(t,e,r)=>{chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.a(e);let o=$(t,e);e=path.toNamespacedPath(utils.toPath(e));try{if((await promises.lstat(e)).isSymbolicLink()&&g(await promises.stat(o),await promises.stat(e))){let[l,a]=await Promise.all([promises.stat(o),promises.stat(e)]);if(g(l,a))return}}catch{}let i=await promises.lstat(o),s=u(i);await R(path.dirname(e));let c=r??(ee?"junction":s==="dir"?"dir":"file");try{await promises.symlink(path.toNamespacedPath(utils.toPath(o)),e,c);}catch(m){if(m.code!=="EEXIST")throw m;let l=await promises.lstat(e);if(!l.isSymbolicLink())throw new chunkBZXQ545V_cjs.a("A "+u(l)+" already exists at the path: "+e);let a=await promises.readlink(e),d=path.toNamespacedPath(path.resolve(a));if(d!==o)throw new chunkBZXQ545V_cjs.a("A symlink targeting to an undesired path already exists: "+e+" -> "+d)}},oe=re;var fe=process.platform==="win32"||/^(?:msys|cygwin)$/.test(process.env.OSTYPE),ce=(t,e,r)=>{chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.a(e);let o=$(t,e);e=path.toNamespacedPath(utils.toPath(e));try{if(fs.lstatSync(e).isSymbolicLink()&&g(fs.statSync(o),fs.statSync(e))){let l=fs.statSync(o),a=fs.statSync(e);if(g(l,a))return}}catch{}let i=fs.lstatSync(o),s=u(i);x(path.dirname(e));let c=r??(fe?"junction":s==="dir"?"dir":"file");try{fs.symlinkSync(path.toNamespacedPath(utils.toPath(o)),e,c);}catch(m){if(m.code!=="EEXIST")throw m;let l=fs.lstatSync(e);if(!l.isSymbolicLink())throw new chunkBZXQ545V_cjs.a("A "+u(l)+" already exists at the path: "+e);let a=fs.readlinkSync(e),d=path.toNamespacedPath(path.resolve(a));if(d!==o)throw new chunkBZXQ545V_cjs.a("A symlink targeting to an undesired path already exists: "+e+" -> "+d)}},me=ce;var mt=/\r?\n/g,H=`
|
|
15
15
|
`,z=`\r
|
|
16
|
-
`,le=process$1.platform==="win32"?z:H,de=t=>{let e=t.match(mt);if(!e||e.length===0)return null;let r=e.filter(i=>i===z).length,o=e.length-r;return r>o?z:H},ye=(t,e)=>t.replaceAll(mt,e);var ue=t=>{let e=t.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${e}$`)},b=ue;var ge=(t,e,r,o)=>Array.isArray(e)&&e.length>0&&!e.some(i=>t.endsWith(i))||r&&!r.some(i=>i.test(t))?!1:!(o&&o.some(i=>i.test(t))),w=ge;var be=async t=>{let e=path.normalize(t),r=path.basename(e),o=await promises.stat(e);return {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:r,path:e}};async function*D(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:c,maxDepth:m=Number.POSITIVE_INFINITY,skip:l}={}){if(chunk7EWY5DJ5_cjs.a(t),m<0)return;let a=c?c.map(n=>typeof n=="string"?b(n):n):void 0,d=l?l.map(n=>typeof n=="string"?b(n):n):void 0;if(t=path.resolve(utils.toPath(t)),o&&w(t,e,a,d)&&(yield await be(t)),!(m<1||!w(t,void 0,void 0,d)))try{for await(let n of await promises.readdir(t,{withFileTypes:!0})){let y=path.join(t,n.name);if(n.isSymbolicLink())if(r)y=await promises.realpath(y);else if(s&&w(y,e,a,d))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:y};else continue;n.isSymbolicLink()||n.isDirectory()?yield*D(y,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:a,maxDepth:m-1,skip:d}):n.isFile()&&i&&w(y,e,a,d)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:y});}}catch(n){throw n instanceof chunkBZXQ545V_cjs.f?n:new chunkBZXQ545V_cjs.f(n,t)}}var Ee=async(t,e={})=>{Array.isArray(e.extensions)||(e.extensions=["js","mjs","cjs","ts"]);let r=[];for await(let o of D(t,e))r.push(o.path);return r},ke=Ee;var Je=t=>{let e=path.normalize(t),r=fs.statSync(e);return {isDirectory:r.isDirectory,isFile:r.isFile,isSymbolicLink:r.isSymbolicLink,name:path.basename(e),path:e}};function*L(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:c,maxDepth:m=Number.POSITIVE_INFINITY,skip:l}={}){if(chunk7EWY5DJ5_cjs.a(t),m<0)return;let a=c?c.map(n=>typeof n=="string"?b(n):n):void 0,d=l?l.map(n=>typeof n=="string"?b(n):n):void 0;if(t=path.resolve(utils.toPath(t)),o&&w(t,e,a,d)&&(yield Je(t)),!(m<1||!w(t,void 0,void 0,d)))try{for(let n of fs.readdirSync(t,{withFileTypes:!0})){let y=path.join(t,n.name);if(n.isSymbolicLink())if(r)y=fs.realpathSync(y);else if(s&&w(y,e,a,d))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:path.normalize(y)};else continue;n.isSymbolicLink()||n.isDirectory()?yield*L(y,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:a,maxDepth:m-1,skip:d}):n.isFile()&&i&&w(y,e,a,d)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:path.normalize(y)});}}catch(n){throw n instanceof chunkBZXQ545V_cjs.f?n:new chunkBZXQ545V_cjs.f(n,t)}}var Ye=(t,e={})=>{Array.isArray(e.extensions)||(e.extensions=["js","mjs","cjs","ts"]);let r=[];for(let o of L(t,e))r.push(o.path);return r},We=Ye;var Ne=async(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?utils.toPath(e.cwd):process.cwd(),o=path.resolve(r),{root:i}=path.parse(o),s=utils.toPath(e.stopAt??i),c=path.resolve(o,s),m=e.type??"file",l=async function(a){return typeof t=="function"?[await t(a)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==c&&o!==i;){for await(let a of await l(o)){if(a===T)return;if(a===void 0)continue;let d=path.isAbsolute(a)?a:path.resolve(o,a);try{let n=await promises.stat(d);if(m==="file"&&n.isFile()||m==="directory"&&n.isDirectory())return d}catch{}}o=path.dirname(o);}},ze=Ne;var Xe=(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?utils.toPath(e.cwd):process.cwd(),o=path.resolve(r),{root:i}=path.parse(o),s=utils.toPath(e.stopAt??i),c=path.resolve(o,s),m=e.type??"file",l=function(a){return typeof t=="function"?[t(a)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==c&&o!==i;){for(let a of l(o)){if(a===T)return;if(a===void 0)continue;let d=path.isAbsolute(a)?a:path.resolve(o,a);try{let n=fs.statSync(d);if(m==="file"&&n.isFile()||m==="directory"&&n.isDirectory())return d}catch{}}o=path.dirname(o);}},He=Xe;async function Qe(t,e=0){chunk7EWY5DJ5_cjs.a(t),t=utils.toPath(t);try{return await promises.access(t,e),!0}catch{return !1}}var S=Qe;function er(t,e=0){chunk7EWY5DJ5_cjs.a(t),t=utils.toPath(t);try{return fs.accessSync(t,e),!0}catch{return !1}}var h=er;var sr={brotli:zlib.brotliDecompress,gzip:zlib.unzip,none:(t,e)=>{e(null,t);}},ar=async(t,e)=>{if(chunk7EWY5DJ5_cjs.a(t),t=utils.toPath(t),!await S(t))throw new chunkBZXQ545V_cjs.e(`unable to read the non-accessible file: ${t}`);if(!await S(t,4))throw new Error(`Unable to read the non-readable file: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{};return await promises.readFile(t,s?{encoding:i,flag:s}:{encoding:i}).then(async c=>await new Promise((m,l)=>{sr[o??"none"](c,(a,d)=>{a?l(a):m(r?d:d.toString());});})).catch(c=>{throw c})},v=ar;var lr={brotli:zlib.brotliDecompressSync,gzip:zlib.unzipSync,none:t=>t},dr=(t,e)=>{if(chunk7EWY5DJ5_cjs.a(t),t=utils.toPath(t),!h(t))throw new chunkBZXQ545V_cjs.e(`unable to read the non-accessible file: ${t}`);if(!h(t,4))throw new chunkBZXQ545V_cjs.e(`invalid access to read file at: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{},c=fs.readFileSync(t,s?{encoding:i,flag:s}:{encoding:i}),m=lr[o??"none"](c);return r?m:m.toString()},U=dr;async function ur(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=await v(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:c}=r??{};return typeof s=="function"&&(i=s(i)),chunk7EWY5DJ5_cjs.b(i,e,utils.toPath(t),{color:c})}var gr=ur;function Sr(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=U(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:c}=r??{};return typeof s=="function"&&(i=s(i)),chunk7EWY5DJ5_cjs.b(i,e,utils.toPath(t),{color:c})}var hr=Sr;async function Or(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:c,...m}=r??{},l=await v(t,{buffer:o,compression:i,encoding:s,flag:c});return typeof e=="function"?yaml.parse(l,e,m):yaml.parse(l,m)}var Rr=Or;function xr(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:c,...m}=r??{},l=U(t,{buffer:o,compression:i,encoding:s,flag:c});return typeof e=="function"?yaml.parse(l,e,m):yaml.parse(l,m)}var Fr=xr;var Lr=async(t,e)=>{if(chunk7EWY5DJ5_cjs.a(t),!fs.existsSync(t)){await promises.mkdir(t,{recursive:!0});return}for await(let r of await promises.readdir(t))await promises.rm(path.join(utils.toPath(t),r),{...e,force:!0,recursive:!0});},vr=Lr;var _r=(t,e)=>{if(chunk7EWY5DJ5_cjs.a(t),!fs.existsSync(t)){fs.mkdirSync(t,{recursive:!0});return}for(let r of fs.readdirSync(t))fs.rmSync(path.join(utils.toPath(t),r),{...e,force:!0,recursive:!0});},Vr=_r;var Nr=async(t,e={})=>{chunk7EWY5DJ5_cjs.a(t);try{await promises.unlink(t);}catch{}try{await promises.rm(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},zr=Nr;var jr=(t,e={})=>{chunk7EWY5DJ5_cjs.a(t);try{fs.unlinkSync(t);}catch{}try{fs.rmSync(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},Br=jr;var Xr=new TextEncoder,Hr=t=>{if(t instanceof Uint8Array)return t;if(typeof t=="string")return Xr.encode(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t)){let e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new Uint8Array(e)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},K=Hr;var io=async(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},chunk7EWY5DJ5_cjs.a(t),chunk7EWY5DJ5_cjs.c(e),t=utils.toPath(t);try{let o=await S(t,0);if(!o&&r.recursive){let c=path.dirname(t);await S(c,0)||await promises.mkdir(c,{recursive:!0});}let i;await promises.writeFile(`${t}.tmp`,K(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=await promises.stat(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),await promises.rename(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{await promises.chown(s,r.chown.uid,r.chown.gid);}catch{}await promises.chmod(s,i&&!r.mode?i.mode:r.mode??438),await promises.rename(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{await S(`${t}.tmp`)&&await promises.unlink(`${t}.tmp`);}},I=io;var yo=(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},chunk7EWY5DJ5_cjs.a(t),chunk7EWY5DJ5_cjs.c(e),t=utils.toPath(t);try{let o=h(t,0);if(!o&&r.recursive){let c=path.dirname(t);h(c,0)||fs.mkdirSync(c,{recursive:!0});}let i;fs.writeFileSync(`${t}.tmp`,K(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=fs.statSync(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),fs.renameSync(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{fs.chownSync(s,r.chown.uid,r.chown.gid);}catch{}fs.chmodSync(s,i&&!r.mode?i.mode:r.mode??438),fs.renameSync(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{h(`${t}.tmp`)&&fs.unlinkSync(`${t}.tmp`);}},A=yo;var uo=/^(?:( )+|\t+)/,J="space",St="tab";function wt(t,e){let r=new Map,o=0,i,s;for(let c of t.split(/\n/g)){if(!c)continue;let m,l,a,d,n,y=c.match(uo);if(y===null)o=0,i="";else {if(m=y[0].length,l=y[1]?J:St,e&&l===J&&m===1)continue;l!==i&&(o=0),i=l,a=1,d=0;let W=m-o;if(o=m,W===0)a=0,d=1;else {let Rt=W>0?W:-W;s=go(l,Rt);}n=r.get(s),n=n===void 0?[1,0]:[n[0]+a,n[1]+d],r.set(s,n);}}return r}function go(t,e){return (t===J?"s":"t")+String(e)}function wo(t){let r=t[0]==="s"?J:St,o=Number(t.slice(1));return {type:r,amount:o}}function So(t){let e,r=0,o=0;for(let[i,[s,c]]of t)(s>r||s===r&&c>o)&&(r=s,o=c,e=i);return e}function ho(t,e){return (t===J?" ":" ").repeat(e)}function Y(t){if(typeof t!="string")throw new TypeError("Expected a string");let e=wt(t,!0);e.size===0&&(e=wt(t,!1));let r=So(e),o,i=0,s="";return r!==void 0&&({type:o,amount:i}=wo(r),s=ho(o,i)),{amount:i,type:o,indent:s}}var Ro=async(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:c=JSON.stringify,...m}={indent:" ",...r},l=i,a=`
|
|
16
|
+
`,le=process$1.platform==="win32"?z:H,de=t=>{let e=t.match(mt);if(!e||e.length===0)return null;let r=e.filter(i=>i===z).length,o=e.length-r;return r>o?z:H},ye=(t,e)=>t.replaceAll(mt,e);var ue=t=>{let e=t.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${e}$`)},b=ue;var ge=(t,e,r,o)=>Array.isArray(e)&&e.length>0&&!e.some(i=>t.endsWith(i))||r&&!r.some(i=>i.test(t))?!1:!(o&&o.some(i=>i.test(t))),w=ge;var be=async t=>{let e=path.normalize(t),r=path.basename(e),o=await promises.stat(e);return {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:r,path:e}};async function*D(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:c,maxDepth:m=Number.POSITIVE_INFINITY,skip:l}={}){if(chunkNEXEUEQV_cjs.a(t),m<0)return;let a=c?c.map(n=>typeof n=="string"?b(n):n):void 0,d=l?l.map(n=>typeof n=="string"?b(n):n):void 0;if(t=path.resolve(utils.toPath(t)),o&&w(t,e,a,d)&&(yield await be(t)),!(m<1||!w(t,void 0,void 0,d)))try{for await(let n of await promises.readdir(t,{withFileTypes:!0})){let y=path.join(t,n.name);if(n.isSymbolicLink())if(r)y=await promises.realpath(y);else if(s&&w(y,e,a,d))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:y};else continue;n.isSymbolicLink()||n.isDirectory()?yield*D(y,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:a,maxDepth:m-1,skip:d}):n.isFile()&&i&&w(y,e,a,d)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:y});}}catch(n){throw n instanceof chunkBZXQ545V_cjs.f?n:new chunkBZXQ545V_cjs.f(n,t)}}var Ee=async(t,e={})=>{Array.isArray(e.extensions)||(e.extensions=["js","mjs","cjs","ts"]);let r=[];for await(let o of D(t,e))r.push(o.path);return r},ke=Ee;var Je=t=>{let e=path.normalize(t),r=fs.statSync(e);return {isDirectory:r.isDirectory,isFile:r.isFile,isSymbolicLink:r.isSymbolicLink,name:path.basename(e),path:e}};function*L(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:c,maxDepth:m=Number.POSITIVE_INFINITY,skip:l}={}){if(chunkNEXEUEQV_cjs.a(t),m<0)return;let a=c?c.map(n=>typeof n=="string"?b(n):n):void 0,d=l?l.map(n=>typeof n=="string"?b(n):n):void 0;if(t=path.resolve(utils.toPath(t)),o&&w(t,e,a,d)&&(yield Je(t)),!(m<1||!w(t,void 0,void 0,d)))try{for(let n of fs.readdirSync(t,{withFileTypes:!0})){let y=path.join(t,n.name);if(n.isSymbolicLink())if(r)y=fs.realpathSync(y);else if(s&&w(y,e,a,d))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:path.normalize(y)};else continue;n.isSymbolicLink()||n.isDirectory()?yield*L(y,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:a,maxDepth:m-1,skip:d}):n.isFile()&&i&&w(y,e,a,d)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:path.normalize(y)});}}catch(n){throw n instanceof chunkBZXQ545V_cjs.f?n:new chunkBZXQ545V_cjs.f(n,t)}}var Ye=(t,e={})=>{Array.isArray(e.extensions)||(e.extensions=["js","mjs","cjs","ts"]);let r=[];for(let o of L(t,e))r.push(o.path);return r},We=Ye;var Ne=async(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?utils.toPath(e.cwd):process.cwd(),o=path.resolve(r),{root:i}=path.parse(o),s=utils.toPath(e.stopAt??i),c=path.resolve(o,s),m=e.type??"file",l=async function(a){return typeof t=="function"?[await t(a)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==c&&o!==i;){for await(let a of await l(o)){if(a===T)return;if(a===void 0)continue;let d=path.isAbsolute(a)?a:path.resolve(o,a);try{let n=await promises.stat(d);if(m==="file"&&n.isFile()||m==="directory"&&n.isDirectory())return d}catch{}}o=path.dirname(o);}},ze=Ne;var Xe=(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?utils.toPath(e.cwd):process.cwd(),o=path.resolve(r),{root:i}=path.parse(o),s=utils.toPath(e.stopAt??i),c=path.resolve(o,s),m=e.type??"file",l=function(a){return typeof t=="function"?[t(a)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==c&&o!==i;){for(let a of l(o)){if(a===T)return;if(a===void 0)continue;let d=path.isAbsolute(a)?a:path.resolve(o,a);try{let n=fs.statSync(d);if(m==="file"&&n.isFile()||m==="directory"&&n.isDirectory())return d}catch{}}o=path.dirname(o);}},He=Xe;async function Qe(t,e=0){chunkNEXEUEQV_cjs.a(t),t=utils.toPath(t);try{return await promises.access(t,e),!0}catch{return !1}}var S=Qe;function er(t,e=0){chunkNEXEUEQV_cjs.a(t),t=utils.toPath(t);try{return fs.accessSync(t,e),!0}catch{return !1}}var h=er;var sr={brotli:zlib.brotliDecompress,gzip:zlib.unzip,none:(t,e)=>{e(null,t);}},ar=async(t,e)=>{if(chunkNEXEUEQV_cjs.a(t),t=utils.toPath(t),!await S(t))throw new chunkBZXQ545V_cjs.e(`unable to read the non-accessible file: ${t}`);if(!await S(t,4))throw new Error(`Unable to read the non-readable file: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{};return await promises.readFile(t,s?{encoding:i,flag:s}:{encoding:i}).then(async c=>await new Promise((m,l)=>{sr[o??"none"](c,(a,d)=>{a?l(a):m(r?d:d.toString());});})).catch(c=>{throw c})},v=ar;var lr={brotli:zlib.brotliDecompressSync,gzip:zlib.unzipSync,none:t=>t},dr=(t,e)=>{if(chunkNEXEUEQV_cjs.a(t),t=utils.toPath(t),!h(t))throw new chunkBZXQ545V_cjs.e(`unable to read the non-accessible file: ${t}`);if(!h(t,4))throw new chunkBZXQ545V_cjs.e(`invalid access to read file at: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{},c=fs.readFileSync(t,s?{encoding:i,flag:s}:{encoding:i}),m=lr[o??"none"](c);return r?m:m.toString()},U=dr;async function ur(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=await v(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:c}=r??{};return typeof s=="function"&&(i=s(i)),chunkNEXEUEQV_cjs.b(i,e,utils.toPath(t),{color:c})}var gr=ur;function Sr(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=U(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:c}=r??{};return typeof s=="function"&&(i=s(i)),chunkNEXEUEQV_cjs.b(i,e,utils.toPath(t),{color:c})}var hr=Sr;async function Or(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:c,...m}=r??{},l=await v(t,{buffer:o,compression:i,encoding:s,flag:c});return typeof e=="function"?yaml.parse(l,e,m):yaml.parse(l,m)}var Rr=Or;function xr(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:c,...m}=r??{},l=U(t,{buffer:o,compression:i,encoding:s,flag:c});return typeof e=="function"?yaml.parse(l,e,m):yaml.parse(l,m)}var Fr=xr;var Lr=async(t,e)=>{if(chunkNEXEUEQV_cjs.a(t),!fs.existsSync(t)){await promises.mkdir(t,{recursive:!0});return}for await(let r of await promises.readdir(t))await promises.rm(path.join(utils.toPath(t),r),{...e,force:!0,recursive:!0});},vr=Lr;var _r=(t,e)=>{if(chunkNEXEUEQV_cjs.a(t),!fs.existsSync(t)){fs.mkdirSync(t,{recursive:!0});return}for(let r of fs.readdirSync(t))fs.rmSync(path.join(utils.toPath(t),r),{...e,force:!0,recursive:!0});},Vr=_r;var Nr=async(t,e={})=>{chunkNEXEUEQV_cjs.a(t);try{await promises.unlink(t);}catch{}try{await promises.rm(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},zr=Nr;var jr=(t,e={})=>{chunkNEXEUEQV_cjs.a(t);try{fs.unlinkSync(t);}catch{}try{fs.rmSync(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},Br=jr;var Xr=new TextEncoder,Hr=t=>{if(t instanceof Uint8Array)return t;if(typeof t=="string")return Xr.encode(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t)){let e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new Uint8Array(e)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},K=Hr;var io=async(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.c(e),t=utils.toPath(t);try{let o=await S(t,0);if(!o&&r.recursive){let c=path.dirname(t);await S(c,0)||await promises.mkdir(c,{recursive:!0});}let i;await promises.writeFile(`${t}.tmp`,K(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=await promises.stat(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),await promises.rename(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{await promises.chown(s,r.chown.uid,r.chown.gid);}catch{}await promises.chmod(s,i&&!r.mode?i.mode:r.mode??438),await promises.rename(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{await S(`${t}.tmp`)&&await promises.unlink(`${t}.tmp`);}},I=io;var yo=(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},chunkNEXEUEQV_cjs.a(t),chunkNEXEUEQV_cjs.c(e),t=utils.toPath(t);try{let o=h(t,0);if(!o&&r.recursive){let c=path.dirname(t);h(c,0)||fs.mkdirSync(c,{recursive:!0});}let i;fs.writeFileSync(`${t}.tmp`,K(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=fs.statSync(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),fs.renameSync(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{fs.chownSync(s,r.chown.uid,r.chown.gid);}catch{}fs.chmodSync(s,i&&!r.mode?i.mode:r.mode??438),fs.renameSync(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{h(`${t}.tmp`)&&fs.unlinkSync(`${t}.tmp`);}},A=yo;var uo=/^(?:( )+|\t+)/,J="space",St="tab";function wt(t,e){let r=new Map,o=0,i,s;for(let c of t.split(/\n/g)){if(!c)continue;let m,l,a,d,n,y=c.match(uo);if(y===null)o=0,i="";else {if(m=y[0].length,l=y[1]?J:St,e&&l===J&&m===1)continue;l!==i&&(o=0),i=l,a=1,d=0;let W=m-o;if(o=m,W===0)a=0,d=1;else {let Rt=W>0?W:-W;s=go(l,Rt);}n=r.get(s),n=n===void 0?[1,0]:[n[0]+a,n[1]+d],r.set(s,n);}}return r}function go(t,e){return (t===J?"s":"t")+String(e)}function wo(t){let r=t[0]==="s"?J:St,o=Number(t.slice(1));return {type:r,amount:o}}function So(t){let e,r=0,o=0;for(let[i,[s,c]]of t)(s>r||s===r&&c>o)&&(r=s,o=c,e=i);return e}function ho(t,e){return (t===J?" ":" ").repeat(e)}function Y(t){if(typeof t!="string")throw new TypeError("Expected a string");let e=wt(t,!0);e.size===0&&(e=wt(t,!1));let r=So(e),o,i=0,s="";return r!==void 0&&({type:o,amount:i}=wo(r),s=ho(o,i)),{amount:i,type:o,indent:s}}var Ro=async(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:c=JSON.stringify,...m}={indent:" ",...r},l=i,a=`
|
|
17
17
|
`;if(await S(t,4))try{let n=await promises.readFile(t,"utf8");if(o){let{indent:y}=Y(n);l=y;}a=n.endsWith(`
|
|
18
18
|
`)?`
|
|
19
19
|
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let d=c(e,s,l);await I(t,`${d}${a}`,m);},xo=Ro;var Po=(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:c=JSON.stringify,...m}={indent:" ",...r},l=i,a=`
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f, a as a$1, e } from './chunk-P3KZLWQC.js';
|
|
2
|
-
import { a, b, c } from './chunk-
|
|
2
|
+
import { a, b, c } from './chunk-ELTI4L4F.js';
|
|
3
3
|
import './chunk-UPN3Y5W3.js';
|
|
4
4
|
import { readdir, realpath, lstat, mkdir, writeFile, link, stat, symlink, readlink, access, readFile, rm, unlink, rename, chown, chmod } from 'node:fs/promises';
|
|
5
5
|
import { readdirSync, realpathSync, lstatSync, mkdirSync, writeFileSync, linkSync, statSync, symlinkSync, readlinkSync, accessSync, readFileSync, existsSync, rmSync, unlinkSync, renameSync, chownSync, chmodSync } from 'node:fs';
|
package/dist/utils.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkNEXEUEQV_cjs = require('./chunk-NEXEUEQV.cjs');
|
|
4
4
|
var chunkN5NZURYL_cjs = require('./chunk-N5NZURYL.cjs');
|
|
5
5
|
var utils = require('@visulima/path/utils');
|
|
6
6
|
|
|
@@ -8,15 +8,15 @@ var f=(t,{whitespace:e=!0}={})=>t.replace(p,r=>r.startsWith('"')||r[1]==="*"&&!r
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "assertValidFileContents", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkNEXEUEQV_cjs.c; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "assertValidFileOrDirectoryPath", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkNEXEUEQV_cjs.a; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "parseJson", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkNEXEUEQV_cjs.b; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "JSONError", {
|
|
22
22
|
enumerable: true,
|
package/dist/utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as assertValidFileContents, a as assertValidFileOrDirectoryPath, b as parseJson } from './chunk-
|
|
1
|
+
export { c as assertValidFileContents, a as assertValidFileOrDirectoryPath, b as parseJson } from './chunk-ELTI4L4F.js';
|
|
2
2
|
export { a as JSONError } from './chunk-UPN3Y5W3.js';
|
|
3
3
|
export { toPath } from '@visulima/path/utils';
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/fs",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"description": "Human friendly file system utilities for Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -117,19 +117,20 @@
|
|
|
117
117
|
],
|
|
118
118
|
"dependencies": {
|
|
119
119
|
"@visulima/path": "1.0.2",
|
|
120
|
-
"type-fest": "^4.
|
|
120
|
+
"type-fest": "^4.20.0"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
123
|
"@anolilab/eslint-config": "^15.0.3",
|
|
124
124
|
"@anolilab/prettier-config": "^5.0.14",
|
|
125
|
-
"@anolilab/semantic-release-pnpm": "^1.1.
|
|
126
|
-
"@anolilab/semantic-release-preset": "^
|
|
127
|
-
"@babel/core": "^7.24.
|
|
125
|
+
"@anolilab/semantic-release-pnpm": "^1.1.3",
|
|
126
|
+
"@anolilab/semantic-release-preset": "^9.0.0",
|
|
127
|
+
"@babel/core": "^7.24.7",
|
|
128
128
|
"@rushstack/eslint-plugin-security": "^0.8.1",
|
|
129
|
-
"@types/node": "18.
|
|
129
|
+
"@types/node": "18.19.15",
|
|
130
130
|
"@visulima/error": "3.2.11",
|
|
131
131
|
"@vitest/coverage-v8": "^1.6.0",
|
|
132
132
|
"@vitest/ui": "^1.6.0",
|
|
133
|
+
"conventional-changelog-conventionalcommits": "8.0.0",
|
|
133
134
|
"cross-env": "^7.0.3",
|
|
134
135
|
"detect-indent": "^7.0.1",
|
|
135
136
|
"eslint": "^8.57.0",
|
|
@@ -140,16 +141,16 @@
|
|
|
140
141
|
"eslint-plugin-vitest": "^0.4.1",
|
|
141
142
|
"eslint-plugin-vitest-globals": "^1.5.0",
|
|
142
143
|
"fast-safe-stringify": "2.1.1",
|
|
143
|
-
"prettier": "^3.3.
|
|
144
|
+
"prettier": "^3.3.2",
|
|
144
145
|
"redos-detector": "^5.1.0",
|
|
145
146
|
"rimraf": "^5.0.7",
|
|
146
147
|
"safe-regex2": "^3.1.0",
|
|
147
|
-
"semantic-release": "
|
|
148
|
+
"semantic-release": "24.0.0",
|
|
148
149
|
"tempy": "^3.1.0",
|
|
149
150
|
"tsup": "^8.1.0",
|
|
150
151
|
"typescript": "^5.4.5",
|
|
151
152
|
"vitest": "^1.6.0",
|
|
152
|
-
"yaml": "^2.4.
|
|
153
|
+
"yaml": "^2.4.5"
|
|
153
154
|
},
|
|
154
155
|
"peerDependencies": {
|
|
155
156
|
"yaml": "^2.4.0"
|