prettier-plugin-marko
Advanced tools
+51
-3
| Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); | ||
| let prettier = require("prettier"); | ||
| let htmljs_parser = require("htmljs-parser"); | ||
| //#region src/parser.ts | ||
| const styleBlockReg = /((?:\.[^\s\\/:*?"<>|({]+)*)\s*\{/y; | ||
@@ -510,7 +511,11 @@ const UNFINISHED = Number.MAX_SAFE_INTEGER; | ||
| } | ||
| //#endregion | ||
| //#region src/utils/read.ts | ||
| function read(range, opts) { | ||
| return opts._markoParsed.read(range); | ||
| } | ||
| //#endregion | ||
| //#region src/utils/get-formatted-body.ts | ||
| const placeholderReg = /MARKO_(\d+)_/g; | ||
| const { mapDoc } = prettier.doc.utils; | ||
| const { mapDoc: mapDoc$1 } = prettier.doc.utils; | ||
| async function getFormattedBody(tag, parser, toDoc, print, opts) { | ||
@@ -527,3 +532,3 @@ let pid = 0; | ||
| const doc = parser ? await toDoc(code, { parser }) : code; | ||
| return !placeholders ? doc : mapDoc(doc, (cur) => { | ||
| return !placeholders ? doc : mapDoc$1(doc, (cur) => { | ||
| if (typeof cur === "string") { | ||
@@ -548,2 +553,4 @@ let match = placeholderReg.exec(cur); | ||
| } | ||
| //#endregion | ||
| //#region src/utils/get-parser-name.ts | ||
| function getParserFromExt(ext) { | ||
@@ -602,2 +609,4 @@ switch (ext) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/print-doc.ts | ||
| const DocCache = /* @__PURE__ */ new WeakMap(); | ||
@@ -652,2 +661,4 @@ function printDoc(doc) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/to-valid-doc.ts | ||
| const { builders: b$2 } = prettier.doc; | ||
@@ -686,2 +697,4 @@ function toValidAttrValue(doc, concise) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/visible-space.ts | ||
| const b$1 = prettier.doc.builders; | ||
@@ -716,4 +729,8 @@ const singleQuoteSpace = "${' '}"; | ||
| } | ||
| //#endregion | ||
| //#region src/index.ts | ||
| const b = prettier.doc.builders; | ||
| const traverseDoc = prettier.doc.utils.traverseDoc; | ||
| const findInDoc = prettier.doc.utils.findInDoc; | ||
| const mapDoc = prettier.doc.utils.mapDoc; | ||
| const stmtParse = { parser: "babel-ts" }; | ||
@@ -984,3 +1001,3 @@ const exprParse = { parser: "__ts_expression" }; | ||
| if (paramsGroup && typeof paramsGroup === "object" && "type" in paramsGroup && paramsGroup.type === "group" && Array.isArray(paramsGroup.contents)) { | ||
| const paramsContents = [...paramsGroup.contents]; | ||
| let paramsContents = [...paramsGroup.contents]; | ||
| const first = paramsContents[0]; | ||
@@ -992,2 +1009,3 @@ const last = paramsContents[paramsContents.length - 1]; | ||
| } | ||
| if (docContainsPipe(paramsContents.slice(1, -1))) paramsContents = wrapPipedTypesInParens(paramsContents); | ||
| return b.group(paramsContents); | ||
@@ -1334,2 +1352,31 @@ } | ||
| } | ||
| function docContainsPipe(doc) { | ||
| return !!findInDoc(doc, (child) => { | ||
| if (typeof child === "string" && child.includes("|")) return true; | ||
| }, false); | ||
| } | ||
| function wrapPipedTypesInParens(doc) { | ||
| return mapDoc(doc, (node) => { | ||
| if (Array.isArray(node)) { | ||
| let changed = false; | ||
| const result = [...node]; | ||
| for (let i = 1; i < result.length; i++) { | ||
| const prev = result[i - 1]; | ||
| const cur = result[i]; | ||
| if (typeof cur === "string" || !docContainsPipe(cur)) continue; | ||
| if (typeof prev === "string" && prev.endsWith(": ") || i >= 2 && result[i - 2] === ":" && prev === " ") { | ||
| result[i] = b.group([ | ||
| "(", | ||
| cur, | ||
| b.softline, | ||
| ")" | ||
| ]); | ||
| changed = true; | ||
| } | ||
| } | ||
| return changed ? result : node; | ||
| } | ||
| return node; | ||
| }); | ||
| } | ||
| /* c8 ignore start */ | ||
@@ -1342,2 +1389,3 @@ function unexpectedDoc(opts, node) { | ||
| /* c8 ignore stop */ | ||
| //#endregion | ||
| exports.languages = languages; | ||
@@ -1344,0 +1392,0 @@ exports.options = options; |
+51
-3
| import { doc } from "prettier"; | ||
| import { TagType, TagType as TagType$1, Validity, createParser, isValidAttrValue, isValidScriptlet, isValidStatement } from "htmljs-parser"; | ||
| //#region src/parser.ts | ||
| const styleBlockReg = /((?:\.[^\s\\/:*?"<>|({]+)*)\s*\{/y; | ||
@@ -509,7 +510,11 @@ const UNFINISHED = Number.MAX_SAFE_INTEGER; | ||
| } | ||
| //#endregion | ||
| //#region src/utils/read.ts | ||
| function read(range, opts) { | ||
| return opts._markoParsed.read(range); | ||
| } | ||
| //#endregion | ||
| //#region src/utils/get-formatted-body.ts | ||
| const placeholderReg = /MARKO_(\d+)_/g; | ||
| const { mapDoc } = doc.utils; | ||
| const { mapDoc: mapDoc$1 } = doc.utils; | ||
| async function getFormattedBody(tag, parser, toDoc, print, opts) { | ||
@@ -526,3 +531,3 @@ let pid = 0; | ||
| const doc = parser ? await toDoc(code, { parser }) : code; | ||
| return !placeholders ? doc : mapDoc(doc, (cur) => { | ||
| return !placeholders ? doc : mapDoc$1(doc, (cur) => { | ||
| if (typeof cur === "string") { | ||
@@ -547,2 +552,4 @@ let match = placeholderReg.exec(cur); | ||
| } | ||
| //#endregion | ||
| //#region src/utils/get-parser-name.ts | ||
| function getParserFromExt(ext) { | ||
@@ -601,2 +608,4 @@ switch (ext) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/print-doc.ts | ||
| const DocCache = /* @__PURE__ */ new WeakMap(); | ||
@@ -651,2 +660,4 @@ function printDoc(doc) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/to-valid-doc.ts | ||
| const { builders: b$2 } = doc; | ||
@@ -685,2 +696,4 @@ function toValidAttrValue(doc, concise) { | ||
| } | ||
| //#endregion | ||
| //#region src/utils/visible-space.ts | ||
| const b$1 = doc.builders; | ||
@@ -715,4 +728,8 @@ const singleQuoteSpace = "${' '}"; | ||
| } | ||
| //#endregion | ||
| //#region src/index.ts | ||
| const b = doc.builders; | ||
| const traverseDoc = doc.utils.traverseDoc; | ||
| const findInDoc = doc.utils.findInDoc; | ||
| const mapDoc = doc.utils.mapDoc; | ||
| const stmtParse = { parser: "babel-ts" }; | ||
@@ -983,3 +1000,3 @@ const exprParse = { parser: "__ts_expression" }; | ||
| if (paramsGroup && typeof paramsGroup === "object" && "type" in paramsGroup && paramsGroup.type === "group" && Array.isArray(paramsGroup.contents)) { | ||
| const paramsContents = [...paramsGroup.contents]; | ||
| let paramsContents = [...paramsGroup.contents]; | ||
| const first = paramsContents[0]; | ||
@@ -991,2 +1008,3 @@ const last = paramsContents[paramsContents.length - 1]; | ||
| } | ||
| if (docContainsPipe(paramsContents.slice(1, -1))) paramsContents = wrapPipedTypesInParens(paramsContents); | ||
| return b.group(paramsContents); | ||
@@ -1333,2 +1351,31 @@ } | ||
| } | ||
| function docContainsPipe(doc) { | ||
| return !!findInDoc(doc, (child) => { | ||
| if (typeof child === "string" && child.includes("|")) return true; | ||
| }, false); | ||
| } | ||
| function wrapPipedTypesInParens(doc) { | ||
| return mapDoc(doc, (node) => { | ||
| if (Array.isArray(node)) { | ||
| let changed = false; | ||
| const result = [...node]; | ||
| for (let i = 1; i < result.length; i++) { | ||
| const prev = result[i - 1]; | ||
| const cur = result[i]; | ||
| if (typeof cur === "string" || !docContainsPipe(cur)) continue; | ||
| if (typeof prev === "string" && prev.endsWith(": ") || i >= 2 && result[i - 2] === ":" && prev === " ") { | ||
| result[i] = b.group([ | ||
| "(", | ||
| cur, | ||
| b.softline, | ||
| ")" | ||
| ]); | ||
| changed = true; | ||
| } | ||
| } | ||
| return changed ? result : node; | ||
| } | ||
| return node; | ||
| }); | ||
| } | ||
| /* c8 ignore start */ | ||
@@ -1341,2 +1388,3 @@ function unexpectedDoc(opts, node) { | ||
| /* c8 ignore stop */ | ||
| //#endregion | ||
| export { languages, options, parsers, printers }; |
+18
-24
| { | ||
| "name": "prettier-plugin-marko", | ||
| "version": "4.0.8", | ||
| "version": "4.0.9", | ||
| "description": "A prettier plugin for parsing and printing Marko files", | ||
@@ -26,3 +26,2 @@ "keywords": [ | ||
| "main": "dist/index.js", | ||
| "module": "dist/index.mjs", | ||
| "files": [ | ||
@@ -37,3 +36,3 @@ "dist", | ||
| "@ci:release": "npm run build && changeset publish && npm ci", | ||
| "@ci:test": "c8 npm test -- --forbid-pending --forbid-only", | ||
| "@ci:test": "vitest run --coverage --no-color", | ||
| "@ci:version": "npm run build && npm run format && changeset version && npm i --package-lock-only", | ||
@@ -45,33 +44,28 @@ "build": "tsc -b && rolldown -c", | ||
| "report": "open ./coverage/lcov-report/index.html", | ||
| "test": "cross-env NODE_ENV=test mocha 'src/**/__tests__/*.test.ts'", | ||
| "test:update": "npm test -- --update" | ||
| "test": "vitest run", | ||
| "test:update": "vitest run --update" | ||
| }, | ||
| "dependencies": { | ||
| "htmljs-parser": "^5.10.0" | ||
| "htmljs-parser": "^5.10.2" | ||
| }, | ||
| "devDependencies": { | ||
| "@changesets/changelog-github": "^0.5.2", | ||
| "@changesets/cli": "^2.29.8", | ||
| "@changesets/changelog-github": "^0.6.0", | ||
| "@changesets/cli": "^2.30.0", | ||
| "@eslint/js": "^10.0.1", | ||
| "@marko/compiler": "^5.39.55", | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "^25.2.3", | ||
| "c8": "^10.1.3", | ||
| "cross-env": "^10.1.0", | ||
| "eslint": "^10.0.0", | ||
| "@marko/compiler": "^5.39.62", | ||
| "@types/node": "^25.5.0", | ||
| "@vitest/coverage-v8": "^4.1.1", | ||
| "eslint": "^10.1.0", | ||
| "eslint-plugin-simple-import-sort": "^12.1.1", | ||
| "fast-glob": "^3.3.3", | ||
| "globals": "^17.3.0", | ||
| "globals": "^17.4.0", | ||
| "husky": "^9.1.7", | ||
| "lint-staged": "^16.2.7", | ||
| "marko": "^6.0.145", | ||
| "mocha": "^11.7.5", | ||
| "mocha-snap": "^5.0.1", | ||
| "lint-staged": "^16.4.0", | ||
| "marko": "^6.0.160", | ||
| "prettier": "^3.8.1", | ||
| "prettier-plugin-packagejson": "^3.0.0", | ||
| "rolldown": "^1.0.0-rc.4", | ||
| "tsx": "^4.21.0", | ||
| "prettier-plugin-packagejson": "^3.0.2", | ||
| "rolldown": "^1.0.0-rc.11", | ||
| "typescript": "^5.9.3", | ||
| "typescript-eslint": "^8.55.1-alpha.4" | ||
| "typescript-eslint": "^8.57.2", | ||
| "vitest": "^4.1.1" | ||
| } | ||
| } |
99045
2.54%18
-21.74%3043
3.26%Updated