Convert markdownlint library to an ECMAScript module, replace markdownlint-micromark with micromark, stop publishing (large) markdownlint-browser.js, see https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c for guidance.

This commit is contained in:
David Anson 2024-11-28 20:36:44 -08:00
parent 191226f070
commit 1e71f6f44e
140 changed files with 1087 additions and 10428 deletions

View file

@ -1,11 +1,10 @@
// @ts-check
"use strict";
const fs = require("node:fs");
const path = require("node:path");
const yaml = require("js-yaml");
const configSchema = require("./markdownlint-config-schema.json");
import fs from "node:fs/promises";
import path from "node:path";
import yaml from "js-yaml";
import { __dirname, importWithTypeJson } from "../test/esm-helpers.mjs";
const configSchema = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema.json");
const configExample = {};
for (const rule in configSchema.properties) {
@ -35,8 +34,8 @@ const transformComments = (input, commentPrefix) => (
);
const configStringJson = JSON.stringify(configExample, null, 2);
fs.writeFileSync(
path.join(__dirname, ".markdownlint.jsonc"),
await fs.writeFile(
path.join(__dirname(import.meta), ".markdownlint.jsonc"),
transformComments(configStringJson, "//"),
"utf8"
);
@ -49,8 +48,8 @@ const configStringYaml = yaml.dump(
"quotingType": "\""
}
);
fs.writeFileSync(
path.join(__dirname, ".markdownlint.yaml"),
await fs.writeFile(
path.join(__dirname(import.meta), ".markdownlint.yaml"),
transformComments(configStringYaml, "#"),
"utf8"
);

View file

@ -1,13 +1,12 @@
// @ts-check
"use strict";
const fs = require("node:fs");
const path = require("node:path");
/** @type {import("../lib/markdownlint").Rule[]} */
const rules = require("../lib/rules");
const jsonSchemaToTypeScript = require("json-schema-to-typescript");
const { version } = require("../lib/constants");
import fs from "node:fs/promises";
import path from "node:path";
/** @type {import("../lib/markdownlint.mjs").Rule[]} */
import rules from "../lib/rules.mjs";
import jsonSchemaToTypeScript from "json-schema-to-typescript";
import { version } from "../lib/constants.mjs";
import { __dirname } from "../test/esm-helpers.mjs";
const schemaName = "markdownlint-config-schema.json";
const schemaUri = `https://raw.githubusercontent.com/DavidAnson/markdownlint/v${version}/schema/${schemaName}`;
@ -586,8 +585,8 @@ for (const [ tag, tagTags ] of Object.entries(tags)) {
}
// Write schema
const schemaFile = path.join(__dirname, schemaName);
fs.writeFileSync(schemaFile, JSON.stringify(schema, null, " "));
const schemaFile = path.join(__dirname(import.meta), schemaName);
await fs.writeFile(schemaFile, JSON.stringify(schema, null, " "));
// Create and write strict schema
const schemaStrict = {
@ -595,15 +594,15 @@ const schemaStrict = {
"$id": schemaStrictUri,
"additionalProperties": false
};
const schemaFileStrict = path.join(__dirname, schemaStrictName);
fs.writeFileSync(schemaFileStrict, JSON.stringify(schemaStrict, null, " "));
const schemaFileStrict = path.join(__dirname(import.meta), schemaStrictName);
await fs.writeFile(schemaFileStrict, JSON.stringify(schemaStrict, null, " "));
// Write TypeScript declaration file
const declarationStrictName = path.join(__dirname, "..", "lib", "configuration-strict.d.ts");
const declarationStrictName = path.join(__dirname(import.meta), "..", "lib", "configuration-strict.d.ts");
schemaStrict.title = "ConfigurationStrict";
jsonSchemaToTypeScript.compile(
const declaration = await jsonSchemaToTypeScript.compile(
// @ts-ignore
schemaStrict,
"UNUSED"
// eslint-disable-next-line unicorn/prefer-top-level-await
).then((declaration) => fs.writeFileSync(declarationStrictName, declaration));
);
await fs.writeFile(declarationStrictName, declaration);