You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP

@markuplint/rules

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@markuplint/rules - npm Package Compare versions

Comparing version

to
1.0.0-alpha.27

@@ -8,5 +8,5 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
const message = messages('Duplicate {0}', 'attribute name');
const message = translate('Duplicate {0}', 'attribute name');
await document.walkOn('Element', async (node) => {

@@ -13,0 +13,0 @@ const attrNameStack = [];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ml_core_1 = require("@markuplint/ml-core");
const alwaysMsg = 'Always insert {0} after {1} of {2}';
const neverMsg = 'Never insert {0} after {1} of {2}';
exports.default = ml_core_1.createRule({

@@ -9,5 +11,4 @@ name: 'attr-equal-space-after',

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
// const message = messages('error');
await document.walkOn('Element', async (node) => {

@@ -21,5 +22,7 @@ for (const attr of node.attributes) {

let isBad = false;
let rawMessage;
switch (node.rule.value) {
case 'always': {
isBad = !hasSpace;
rawMessage = alwaysMsg;
break;

@@ -29,2 +32,3 @@ }

isBad = hasSpace;
rawMessage = neverMsg;
break;

@@ -35,2 +39,3 @@ }

isBad = !hasSpace || hasLineBreak;
rawMessage = alwaysMsg;
break;

@@ -40,2 +45,3 @@ }

isBad = hasSpace && !hasLineBreak;
rawMessage = neverMsg;
break;

@@ -47,3 +53,3 @@ }

severity: node.rule.severity,
message: node.rule.value,
message: translate(rawMessage, 'space', 'equal sign', 'attribute'),
line: attr.spacesBeforeEqual.startLine,

@@ -50,0 +56,0 @@ col: attr.spacesBeforeEqual.startCol,

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ml_core_1 = require("@markuplint/ml-core");
const alwaysMsg = 'Always insert {0} before {1} of {2}';
const neverMsg = 'Never insert {0} before {1} of {2}';
exports.default = ml_core_1.createRule({

@@ -9,5 +11,4 @@ name: 'attr-equal-space-before',

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
// const message = messages('error');
await document.walkOn('Element', async (node) => {

@@ -21,5 +22,7 @@ for (const attr of node.attributes) {

let isBad = false;
let rawMessage;
switch (node.rule.value) {
case 'always': {
isBad = !hasSpace;
rawMessage = alwaysMsg;
break;

@@ -29,2 +32,3 @@ }

isBad = hasSpace;
rawMessage = neverMsg;
break;

@@ -35,2 +39,3 @@ }

isBad = !hasSpace || hasLineBreak;
rawMessage = alwaysMsg;
break;

@@ -40,2 +45,3 @@ }

isBad = hasSpace && !hasLineBreak;
rawMessage = neverMsg;
break;

@@ -47,3 +53,3 @@ }

severity: node.rule.severity,
message: node.rule.value,
message: translate(rawMessage, 'space', 'equal sign', 'attribute'),
line: attr.spacesBeforeEqual.startLine,

@@ -50,0 +56,0 @@ col: attr.spacesBeforeEqual.startCol,

@@ -12,5 +12,4 @@ "use strict";

},
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
// const message = messages('error');
await document.walkOn('Element', async (node) => {

@@ -25,3 +24,3 @@ const attrs = node.attributes;

severity: node.rule.severity,
message: messages('スペースが必要です'),
message: translate('Required {0}', 'space'),
line: attr.spacesBeforeName.startLine,

@@ -37,3 +36,3 @@ col: attr.spacesBeforeName.startCol,

severity: node.rule.severity,
message: messages('改行はしないでください'),
message: translate('Never {0}', 'break line'),
line: attr.spacesBeforeName.startLine,

@@ -49,3 +48,3 @@ col: attr.spacesBeforeName.startCol,

severity: node.rule.severity,
message: messages('改行してください'),
message: translate('Insert {0}', 'line break'),
line: attr.spacesBeforeName.startLine,

@@ -59,3 +58,3 @@ col: attr.spacesBeforeName.startCol,

severity: node.rule.severity,
message: messages('スペースは{0}つにしてください', node.rule.option.width),
message: translate('{0} should be {1}', 'Space', node.rule.option.width),
line: attr.spacesBeforeName.startLine,

@@ -62,0 +61,0 @@ col: attr.spacesBeforeName.startCol,

@@ -13,6 +13,6 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
await document.walkOn('Element', async (node) => {
const message = messages('{0} is must {1} on {2}', 'Attribute value', 'quote', `${node.rule.value} quotation mark`);
const message = translate('{0} is must {1} on {2}', 'Attribute value', 'quote', `${node.rule.value} quotation mark`);
for (const attr of node.attributes) {

@@ -19,0 +19,0 @@ if (attr.equal.raw === '') {

@@ -9,3 +9,3 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -16,3 +16,3 @@ await document.walkOn('Element', async (node) => {

const cases = node.rule.value === 'no-upper' ? 'lower' : 'upper';
const message = messages(`{0} of {1} ${ms} be {2}`, 'Attribute name', 'HTML', `${cases}case`);
const message = translate(`{0} of {1} ${ms} be {2}`, 'Attribute name', 'HTML elements', `${cases}case`);
if (node.namespaceURI === 'http://www.w3.org/1999/xhtml') {

@@ -19,0 +19,0 @@ if (node.attributes) {

@@ -10,3 +10,3 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -20,3 +20,3 @@ await document.walk(async (node) => {

const deny = node.rule.value === 'lower' ? /[A-Z]/ : /[a-z]/;
const message = messages(`{0} of {1} ${ms} be {2}`, 'Tag name', 'HTML element', `${node.rule.value}case`);
const message = translate(`{0} of {1} ${ms} be {2}`, 'Tag name', 'HTML elements', `${node.rule.value}case`);
if (deny.test(node.nodeName)) {

@@ -23,0 +23,0 @@ reports.push({

@@ -10,3 +10,3 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -20,3 +20,3 @@ const targetNodes = [];

const ms = severity === 'error' ? 'must' : 'should';
const message = messages(`{0} ${ms} {1}`, 'Illegal characters', 'escape in character reference');
const message = translate(`{0} ${ms} {1}`, 'Illegal characters', 'escape in character reference');
targetNodes.push({

@@ -33,3 +33,3 @@ severity,

const ms = severity === 'error' ? 'must' : 'should';
const message = messages(`{0} ${ms} {1}`, 'Illegal characters', 'escape in character reference');
const message = translate(`{0} ${ms} {1}`, 'Illegal characters', 'escape in character reference');
for (const attr of node.attributes) {

@@ -36,0 +36,0 @@ if (!attr.value) {

@@ -9,5 +9,4 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
// const message = messages(`{0} of {1} ${ms} be {2}`, 'Attribute name', 'HTML', `${config.value}case`);
await document.walkOn('Element', async (node) => {

@@ -24,3 +23,3 @@ if (node.rule.value) {

severity: node.rule.severity,
message: `"${className}" class name is unmatched patterns ("${classPatterns.join('" or "')}")`,
message: translate('{0} {1} is unmatched patterns ({2})', `"${className}"`, 'class name', `"${classPatterns.join('", "')}"`),
line: attr.name.startLine,

@@ -27,0 +26,0 @@ col: attr.name.startCol,

@@ -13,3 +13,3 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -28,3 +28,3 @@ await document.walkOn('Element', async (element) => {

if (attrSpec.deprecated || attrSpec.obsolete) {
const message = messages(`"${name}" {0} is {1}`, 'attribute', attrSpec.deprecated ? 'deprecated' : 'obsolete');
const message = translate('The {0} {1} is {2}', name, 'attribute', attrSpec.deprecated ? 'deprecated' : 'obsolete');
reports.push({

@@ -31,0 +31,0 @@ severity: element.rule.severity,

@@ -13,5 +13,5 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
const message = messages('{0} is {1}', 'Element', 'deprecated');
const message = translate('{0} is {1}', 'Element', 'deprecated');
await document.walkOn('Element', async (element) => {

@@ -18,0 +18,0 @@ if (element.isForeignElement) {

@@ -10,3 +10,3 @@ "use strict";

},
async verify(document, messages, rule) {
async verify(document, translate, rule) {
if (document.isFragment) {

@@ -20,3 +20,3 @@ return [];

severity: rule.severity,
message: messages('Missing doctype'),
message: translate('Required {0}', 'doctype'),
line: 1,

@@ -32,3 +32,3 @@ col: 1,

severity: rule.severity,
message: messages('Never declarate obsolete Doctype'),
message: translate('Never {0} {1}', 'declarate', 'obsolete doctype'),
line: doctype.startLine,

@@ -35,0 +35,0 @@ col: doctype.startCol,

@@ -8,5 +8,5 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];
const message = messages('Duplicate {0}', 'attribute id value');
const message = translate('Duplicate {0}', 'attribute id value');
const idStack = [];

@@ -13,0 +13,0 @@ await document.walkOn('Element', async (node) => {

@@ -12,3 +12,3 @@ "use strict";

},
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -36,6 +36,6 @@ await document.walk(async (node) => {

node.indentation.width % node.rule.value) {
spec = messages('{0} width spaces', `${node.rule.value}`);
spec = translate('{0} width spaces', `${node.rule.value}`);
}
if (spec) {
const message = messages(`{0} ${ms} be {1}`, 'Indentation', spec);
const message = translate(`{0} ${ms} be {1}`, 'Indentation', spec);
reports.push({

@@ -76,3 +76,3 @@ severity: node.rule.severity,

if (diff !== 0) {
const message = messages(diff < 1 ? 'インデントを下げてください' : 'インデントを上げてください');
const message = translate(diff < 1 ? 'Should increase indentation' : 'Should decrease indentation');
reports.push({

@@ -89,3 +89,3 @@ severity: node.rule.severity,

if (diff !== expectedWidth) {
const message = messages(diff < 1 ? 'インデントを下げてください' : 'インデントを上げてください');
const message = translate(diff < 1 ? 'Should increase indentation' : 'Should decrease indentation');
reports.push({

@@ -124,3 +124,3 @@ severity: node.rule.severity,

if (startTagIndentationWidth !== endTagIndentationWidth) {
const message = messages('終了タグと開始タグのインデント位置が揃っていません。');
const message = translate('Start tag and end tag indentation should align');
reports.push({

@@ -196,3 +196,2 @@ severity: closeTag.rule.severity,

if (diff !== 0) {
// const message = messages(diff < 1 ? `インデントを下げてください` : `インデントを上げてください`);
// const raw = node.indentation.raw;

@@ -209,3 +208,2 @@ const fixed = parent.indentation.raw;

if (diff !== expectedWidth) {
// const message = messages(diff < 1 ? `インデントを下げてください` : `インデントを上げてください`);
// const raw = node.indentation.raw;

@@ -212,0 +210,0 @@ const fixed = (node.rule.value === 'tab' ? '\t' : ' ').repeat(parentIndentWidth + expectedWidth);

@@ -6,3 +6,2 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const async_attr_in_script_1 = __importDefault(require("./async-attr-in-script"));
const attr_duplication_1 = __importDefault(require("./attr-duplication"));

@@ -27,3 +26,2 @@ const attr_equal_space_after_1 = __importDefault(require("./attr-equal-space-after"));

exports.default = [
async_attr_in_script_1.default,
attr_duplication_1.default,

@@ -30,0 +28,0 @@ attr_equal_space_after_1.default,

@@ -22,3 +22,3 @@ "use strict";

},
async verify(document, messages) {
async verify(document, translate) {
if (document.isFragment) {

@@ -84,3 +84,3 @@ return [];

severity: el.rule.severity,
message: messages(`The ${role} landmark should be top level landmarks`),
message: translate('{0} should be {1}', role, 'top level'),
line: el.startLine,

@@ -109,3 +109,3 @@ col: el.startCol,

severity: el.rule.severity,
message: messages(`Should have a unique label because ${role} landmark role is used more than once on a web page`),
message: translate('Should have a unique label because {0} landmarks were markup more than once on a page', role),
line: el.startLine,

@@ -112,0 +112,0 @@ col: el.startCol,

@@ -15,3 +15,3 @@ "use strict";

defaultOptions: [],
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -30,3 +30,3 @@ let idCounter = 0;

severity: node.rule.severity,
message: messages(`Invalid structure: "${node.nodeName}" element must have an ancestor "${spec.ancestor}"`),
message: translate('The {0} element must be descendant of the {1} element', node.nodeName, spec.ancestor),
line: node.startLine,

@@ -56,3 +56,3 @@ col: node.startCol,

severity: node.rule.severity,
message: messages(`Invalid content in "${node.nodeName}" element on the HTML spec`),
message: translate('Invalid content of the {0} element in {1}', node.nodeName, 'the HTML specification'),
line: node.startLine,

@@ -79,3 +79,3 @@ col: node.startCol,

severity: node.rule.severity,
message: messages(`Invalid content in "${node.nodeName}" element on the HTML spec`),
message: translate('Invalid content of the {0} element in {1}', node.nodeName, 'the HTML specification'),
line: node.startLine,

@@ -104,3 +104,3 @@ col: node.startCol,

severity: node.rule.severity,
message: messages(`Invalid content in "${node.nodeName}" element on rule settings`),
message: translate('Invalid content of the {0} element in {1}', node.nodeName, 'settings'),
line: node.startLine,

@@ -107,0 +107,0 @@ col: node.startCol,

@@ -9,3 +9,3 @@ "use strict";

defaultOptions: null,
async verify(document, messages) {
async verify(document, translate) {
const reports = [];

@@ -16,3 +16,3 @@ await document.walkOn('Element', async (node) => {

if (!node.hasAttribute(attr)) {
const message = messages('Required {0} on {1}', `'${attr}'`, `'<${node.nodeName}>'`);
const message = translate('Required {0} on {1}', `'${attr}'`, `'<${node.nodeName}>'`);
reports.push({

@@ -19,0 +19,0 @@ severity: node.rule.severity,

@@ -11,3 +11,3 @@ "use strict";

},
async verify(document, messages, globalRule) {
async verify(document, translate, globalRule) {
const reports = [];

@@ -24,3 +24,3 @@ const h1Stack = [];

if (h1Stack.length === 0) {
const message = messages('Missing {0}', 'h1 element');
const message = translate('Missing the {0} {1}', 'h1', 'element');
reports.push({

@@ -35,3 +35,3 @@ severity: globalRule.severity,

else if (globalRule.option['expected-once'] && h1Stack.length > 1) {
const message = messages('Duplicate {0}', 'h1 element');
const message = translate('Duplicate the {0} {1}', 'h1', 'element');
reports.push({

@@ -38,0 +38,0 @@ severity: globalRule.severity,

{
"name": "@markuplint/rules",
"version": "1.0.0-alpha.26",
"version": "1.0.0-alpha.27",
"description": "Rules for markuplint",

@@ -20,9 +20,9 @@ "repository": "git@github.com:markuplint/markuplint.git",

"dependencies": {
"@markuplint/html-ls": "^1.0.0-alpha.18",
"@markuplint/html-ls": "^1.0.0-alpha.19",
"@markuplint/ml-spec": "^1.0.0-alpha.7"
},
"devDependencies": {
"@markuplint/ml-core": "^1.0.0-alpha.19"
"@markuplint/ml-core": "^1.0.0-alpha.20"
},
"gitHead": "523469cb7beeb81553c127095805bf5358848889"
"gitHead": "29707f9a60778eba2343c472316767c522a41ed4"
}

@@ -69,8 +69,2 @@ # @markuplint/rules

### Performance
| Avaiable | Docs | Docs(ja) | Rule | Fixable |
| -------- | ---- | -------- | --------------------------------------------------- | ------- |
| ✅ | ✅ | ✅ | [async-attr-in-script](./src/async-attr-in-script/) |
## Install

@@ -77,0 +71,0 @@

Sorry, the diff of this file is not supported yet