New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

markuplint

Package Overview
Dependencies
Maintainers
1
Versions
295
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

markuplint - npm Package Compare versions

Comparing version 4.0.0-dev.0 to 4.0.0-dev.10

lib/cli/init/select-modules.d.ts

8

lib/cli/index.js

@@ -5,3 +5,2 @@ import getStdin from 'get-stdin';

import { command } from './command.js';
import { createRule } from './create-rule/index.js';
import { initialize } from './init/index.js';

@@ -27,7 +26,4 @@ import { search } from './search/index.js';

if (cli.flags.createRule) {
await createRule().catch(error => {
process.stderr.write(error + '\n');
process.exit(1);
});
process.exit(0);
process.stderr.write("Use to run 'npx @markuplint/create-rule' instead of 'markuplint --create-rule'.\n");
process.exit(1);
}

@@ -34,0 +30,0 @@ const files = cli.input;

@@ -1,12 +0,9 @@

import fs from 'node:fs';
import fs from 'node:fs/promises';
import module from 'node:module';
import path from 'node:path';
import util from 'node:util';
import { head, write, error } from '../../util.js';
import { confirm, confirmSequence, multiSelect } from '../prompt.js';
import { installModule, multiSelect, confirm, confirmSequence, header } from '@markuplint/cli-utils';
import { createConfig, langs } from './create-config.js';
import { getDefaultRules } from './get-default-rules.js';
import { installModule, selectModules } from './install-module.js';
import { selectModules } from './select-modules.js';
const require = module.createRequire(import.meta.url);
const writeFile = util.promisify(fs.writeFile);
const ruleCategories = {

@@ -30,4 +27,5 @@ validation: {

export async function initialize() {
write(head('Initialization'));
write.break();
process.stdout.write(header('Initialization'));
process.stdout.write('\n');
process.stdout.write('\n');
const selectedLangs = await multiSelect({

@@ -63,19 +61,19 @@ message: 'Which do you use template engines?',

const filePath = path.resolve(process.cwd(), '.markuplintrc');
await writeFile(filePath, JSON.stringify(config, null, 2), { encoding: 'utf8' });
write(`✨Created: ${filePath}`);
await fs.writeFile(filePath, JSON.stringify(config, null, 2), { encoding: 'utf8' });
process.stdout.write(`✨Created: ${filePath}\n`);
if (autoInstall) {
write('Install automatically');
process.stdout.write('Install automatically\n');
const modules = selectModules(selectedLangs);
const result = await installModule(modules, true).catch(error_ => new Error(error_));
if (result instanceof Error) {
error.exit();
return;
// eslint-disable-next-line unicorn/no-process-exit
process.exit(1);
}
if (result.alreadyExists) {
write('Modules are installed already.');
process.stdout.write('Modules are installed already.\n');
}
else {
write('✨ Success');
process.stdout.write('✨ Success\n');
}
}
}

@@ -1,2 +0,2 @@

import { messageToString } from '../util.js';
import { messageToString } from '@markuplint/cli-utils';
export function githubReporter(results) {

@@ -3,0 +3,0 @@ const out = [];

@@ -1,5 +0,5 @@

import c from 'cli-color';
import { markuplint, messageToString, p, w } from '../util.js';
const loggerError = c.red;
const loggerWarning = c.xterm(208);
import { name, font, pad, getWidth, messageToString } from '@markuplint/cli-utils';
const commandName = name.toLowerCase();
const loggerError = font.red;
const loggerWarning = font.xterm(208);
export function simpleReporter(results, options) {

@@ -15,17 +15,17 @@ const sizes = {

const meg = messageToString(violation.message, violation.reason);
sizes.meg = Math.max(sizes.meg, w(meg));
sizes.meg = Math.max(sizes.meg, getWidth(meg));
}
const out = [];
if (results.violations.length > 0) {
out.push(`<${markuplint}> ${c.underline(results.filePath)}: ${loggerError('✗')}`);
out.push(`<${commandName}> ${font.underline(results.filePath)}: ${loggerError('✗')}`);
for (const violation of results.violations) {
const s = violation.severity === 'error' ? loggerError('✖') : loggerWarning('⚠️');
const meg = messageToString(violation.message, violation.reason);
out.push(` ${c.cyan(`${p(violation.line, sizes.line, true)}:${p(violation.col, sizes.col)}`)} ${s} ${p(meg, sizes.meg)} ${c.xterm(8)(violation.ruleId)} `);
out.push(` ${font.cyan(`${pad(violation.line, sizes.line, true)}:${pad(violation.col, sizes.col)}`)} ${s} ${pad(meg, sizes.meg)} ${font.xterm(8)(violation.ruleId)} `);
}
}
else if (!options.problemOnly) {
out.push(`<${markuplint}> ${c.underline(results.filePath)}: ${c.green('✓')}`);
out.push(`<${commandName}> ${font.underline(results.filePath)}: ${font.green('✓')}`);
}
return out;
}

@@ -1,5 +0,5 @@

import c from 'cli-color';
import { invisibleSpace, markuplint, messageToString, p, space, w } from '../util.js';
const loggerError = c.red;
const loggerWarning = c.xterm(208);
import { messageToString, font, name, invisibleSpace, space, pad, getWidth } from '@markuplint/cli-utils';
const commandName = name.toLowerCase();
const loggerError = font.red;
const loggerWarning = font.xterm(208);
export function standardReporter(results, options) {

@@ -15,3 +15,3 @@ const sizes = {

const meg = messageToString(violation.message, violation.reason);
sizes.meg = Math.max(sizes.meg, w(meg));
sizes.meg = Math.max(sizes.meg, getWidth(meg));
}

@@ -22,24 +22,39 @@ const out = [];

for (const violation of results.violations) {
const prev = lines[violation.line - 2] ?? '';
const line = lines[violation.line - 1] ?? '';
const next = lines[violation.line - 0] ?? '';
const before = line.slice(0, Math.max(0, violation.col - 1));
const after = line.slice(Math.max(0, violation.col - 1 + violation.raw.length));
const logger = violation.severity === 'error' ? loggerError : loggerWarning;
const meg = messageToString(violation.message, violation.reason);
out.push(`<${markuplint}> ${logger(`${violation.severity}: ${meg} (${violation.ruleId}) ${c.underline(`${results.filePath}:${violation.line}:${violation.col}`)}`)}`);
if (violation.line - 1 > 0) {
out.push(` ${c.cyan(p(violation.line - 1, sizes.col, true))}: ${space(prev)}`);
const startLine = violation.line - 1;
// Main message
out.push(`<${commandName}> ${logger(`${violation.severity}: ${meg} (${violation.ruleId}) ${font.underline(`${results.filePath}:${violation.line}:${violation.col}`)}`)}`);
// Previous line
if (startLine > 0) {
const prev = lines[startLine - 1] ?? '';
out.push(` ${font.cyan(pad(startLine, sizes.col, true))}: ${space(prev)}`);
}
out.push(` ${c.cyan(p(violation.line, sizes.col, true))}: ${space(before)}${c.bgRed(violation.raw)}${space(after)}`);
if (!options.color) {
out.push(` ${invisibleSpace(before)}${'^'.repeat(violation.raw.length)}${invisibleSpace(after)}`);
// Current line
const rawLines = violation.raw.split(/\r?\n/);
const line = lines[startLine] ?? '';
for (const [i, rawLine] of rawLines.entries()) {
const currentLine = lines[startLine + i] ?? '';
const beforeChars = i === 0 ? line.slice(0, Math.max(0, violation.col - 1)) : rawLine.match(/^\s+/)?.[0] ?? '';
const codeChars = rawLine.trim();
const afterChars = currentLine.slice(Math.max(0, beforeChars.length + codeChars.length));
const lineNoChars = pad(violation.line + i, sizes.col, true);
const lineNo = font.cyan(lineNoChars);
const before = i === 0 ? space(beforeChars) : font.bgRed(space(beforeChars));
const code = font.bgRed(codeChars);
const after = space(afterChars);
out.push(` ${lineNo}: ${before}${code}${space(after)}`);
if (!options.color) {
out.push(` ${invisibleSpace(lineNoChars + ': ' + beforeChars)}${'^'.repeat(codeChars.length)}${invisibleSpace(afterChars)}`);
}
}
out.push(` ${c.cyan(p(violation.line + 1, sizes.col, true))}: ${space(next)}`);
// Next line
const next = lines[startLine + rawLines.length] ?? '';
out.push(` ${font.cyan(pad(startLine + rawLines.length + 1, sizes.col, true))}: ${space(next)}`);
}
}
else if (!options.problemOnly) {
out.push(`<${markuplint}> ${c.green('passed')} ${c.underline(results.filePath)}`);
out.push(`<${commandName}> ${font.green('passed')} ${font.underline(results.filePath)}`);
}
return out;
}
{
"name": "markuplint",
"version": "4.0.0-dev.0+7c596917",
"version": "4.0.0-dev.10+b28398ab",
"description": "An HTML linter for all markup developers",

@@ -28,25 +28,18 @@ "author": "Yusuke Hirao",

"dependencies": {
"@markuplint/create-rule-helper": "4.0.0-dev.0+7c596917",
"@markuplint/file-resolver": "4.0.0-dev.0+7c596917",
"@markuplint/html-parser": "4.0.0-dev.0+7c596917",
"@markuplint/html-spec": "4.0.0-dev.0+7c596917",
"@markuplint/i18n": "4.0.0-dev.0+7c596917",
"@markuplint/ml-ast": "4.0.0-dev.0+7c596917",
"@markuplint/ml-config": "4.0.0-dev.0+7c596917",
"@markuplint/ml-core": "4.0.0-dev.0+7c596917",
"@markuplint/ml-spec": "4.0.0-dev.0+7c596917",
"@markuplint/rules": "4.0.0-dev.0+7c596917",
"@markuplint/shared": "4.0.0-dev.0+7c596917",
"@types/cli-color": "^2.0.6",
"@markuplint/cli-utils": "4.0.0-dev.3823+b28398ab",
"@markuplint/file-resolver": "4.0.0-dev.10+b28398ab",
"@markuplint/html-parser": "4.0.0-dev.10+b28398ab",
"@markuplint/html-spec": "4.0.0-dev.10+b28398ab",
"@markuplint/i18n": "4.0.0-dev.10+b28398ab",
"@markuplint/ml-ast": "4.0.0-dev.10+b28398ab",
"@markuplint/ml-config": "4.0.0-dev.10+b28398ab",
"@markuplint/ml-core": "4.0.0-dev.10+b28398ab",
"@markuplint/ml-spec": "4.0.0-dev.10+b28398ab",
"@markuplint/rules": "4.0.0-dev.10+b28398ab",
"@markuplint/shared": "4.0.0-dev.10+b28398ab",
"@types/debug": "^4.1.12",
"@types/uuid": "^9.0.7",
"chokidar": "^3.5.3",
"cli-color": "^2.0.3",
"debug": "^4.3.4",
"detect-installed": "^2.0.4",
"eastasianwidth": "^0.2.0",
"enquirer": "^2.4.1",
"get-stdin": "^9.0.0",
"gray-matter": "^4.0.3",
"has-yarn": "^3.0.0",
"meow": "^12.1.1",

@@ -57,6 +50,5 @@ "node-fetch": "^3.3.2",

"strip-ansi": "^7.1.0",
"type-fest": "^4.8.2",
"uuid": "^9.0.1"
"type-fest": "^4.8.3"
},
"gitHead": "7c59691701465a0fb3a4b69187318e8033c463d4"
"gitHead": "b28398ab9c8f0ad790f2915ad5da8f3a80e9b8d6"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc