🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

prettier-plugin-marko

Package Overview
Dependencies
Maintainers
7
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

prettier-plugin-marko - npm Package Compare versions

Comparing version
4.0.8
to
4.0.9
+51
-3
dist/index.js
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;

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"
}
}