@qualcomm-ui/eslint-config-mdx 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,226 +1,8 @@
1
- // src/oxfmt-utils.ts
2
- import { readFile } from "node:fs/promises";
3
- import { dirname, isAbsolute, join, parse, resolve } from "node:path";
4
- import { pathToFileURL } from "node:url";
5
- import { format as formatCode } from "oxfmt";
6
- import { parseConfigFileTextToJson } from "typescript";
7
- var CONFIG_FILENAMES = [".oxfmtrc.json", ".oxfmtrc.jsonc", "oxfmt.config.ts"];
8
- var configCache = /* @__PURE__ */ new Map();
9
- async function loadOxfmtConfig(filePath) {
10
- const basePath = getAbsolutePath(filePath);
11
- const startDir = parse(basePath).ext ? dirname(basePath) : basePath;
12
- const cachedConfig = configCache.get(startDir);
13
- if (cachedConfig) {
14
- return cachedConfig;
15
- }
16
- const configPromise = findOxfmtConfig(startDir).catch((error) => {
17
- configCache.delete(startDir);
18
- throw error;
19
- });
20
- configCache.set(startDir, configPromise);
21
- return configPromise;
22
- }
23
- async function formatOxfmt(filePath, value, config) {
24
- try {
25
- const result = await formatCode(filePath, value, config);
26
- if (result.errors.length > 0) {
27
- return null;
28
- }
29
- return removeFinalEol(result.code);
30
- } catch {
31
- return null;
32
- }
33
- }
34
- function getAbsolutePath(filePath) {
35
- if (!filePath) {
36
- return process.cwd();
37
- }
38
- return isAbsolute(filePath) ? filePath : resolve(process.cwd(), filePath);
39
- }
40
- function getErrorMessage(error) {
41
- if (error instanceof Error) {
42
- return error.message;
43
- }
44
- return String(error);
45
- }
46
- async function findOxfmtConfig(startDir) {
47
- let currentDir = startDir;
48
- while (true) {
49
- for (const configFilename of CONFIG_FILENAMES) {
50
- const configPath = join(currentDir, configFilename);
51
- const config = await readOxfmtConfig(configPath, configFilename);
52
- if (config) {
53
- return config;
54
- }
55
- }
56
- const parentDir = dirname(currentDir);
57
- if (parentDir === currentDir) {
58
- return {};
59
- }
60
- currentDir = parentDir;
61
- }
62
- }
63
- async function readOxfmtConfig(configPath, configFilename) {
64
- if (configFilename === "oxfmt.config.ts") {
65
- return readTypeScriptConfig(configPath);
66
- }
67
- const source = await readOptionalFile(configPath);
68
- if (source === null) {
69
- return null;
70
- }
71
- if (configFilename.endsWith(".jsonc")) {
72
- return validateConfig(configPath, readJsoncConfig(configPath, source));
73
- }
74
- return validateConfig(configPath, JSON.parse(source));
75
- }
76
- async function readTypeScriptConfig(configPath) {
77
- const source = await readOptionalFile(configPath);
78
- if (source === null) {
79
- return null;
80
- }
81
- const url = pathToFileURL(configPath);
82
- url.searchParams.set("cache", Date.now().toString());
83
- const module = await import(url.href);
84
- return validateConfig(configPath, module.default);
85
- }
86
- function readJsoncConfig(configPath, source) {
87
- const result = parseConfigFileTextToJson(configPath, source);
88
- if (result.error) {
89
- throw new Error(String(result.error.messageText));
90
- }
91
- return result.config;
92
- }
93
- function validateConfig(configPath, config) {
94
- if (!isPlainConfig(config)) {
95
- throw new Error(`${configPath} must define an object`);
96
- }
97
- return config;
98
- }
99
- async function readOptionalFile(path) {
100
- try {
101
- return await readFile(path, "utf8");
102
- } catch (error) {
103
- if (isMissingFileError(error)) {
104
- return null;
105
- }
106
- throw error;
107
- }
108
- }
109
- function removeFinalEol(value) {
110
- return value.replace(/\r?\n$/u, "");
111
- }
112
- function isPlainConfig(value) {
113
- return typeof value === "object" && value !== null && !Array.isArray(value);
114
- }
115
- function isMissingFileError(error) {
116
- if (typeof error !== "object" || error === null || !("code" in error)) {
117
- return false;
118
- }
119
- const { code } = error;
120
- return code === "ENOENT" || code === "ENOTDIR";
121
- }
122
-
123
- // src/remark-lint-mdx-jsx-format.ts
124
- function remarkLintMdxJsxFormat() {
125
- return async function transform(tree, file) {
126
- const source = getFileValue(file);
127
- if (!source) {
128
- return;
129
- }
130
- let oxfmtConfig;
131
- try {
132
- oxfmtConfig = await loadOxfmtConfig(file.path);
133
- } catch (error) {
134
- file.message(
135
- `Unable to load oxfmt config: ${getErrorMessage(error)}`,
136
- { column: 1, line: 1 },
137
- "remark-lint:mdx-jsx-format"
138
- );
139
- await replaceMdxJsxFlowElements(tree, source, file.path, null, file);
140
- return;
141
- }
142
- await replaceMdxJsxFlowElements(tree, source, file.path, oxfmtConfig, file);
143
- };
144
- }
145
- async function replaceMdxJsxFlowElements(node, source, filePath, config, file) {
146
- if (!Array.isArray(node.children)) {
147
- return;
148
- }
149
- const children = [];
150
- for (const child of node.children) {
151
- if (child.type === "mdxJsxFlowElement") {
152
- const raw = getSourceSlice(source, child);
153
- if (raw === null) {
154
- children.push(child);
155
- continue;
156
- }
157
- const formatted = config === null || hasChildren(child) ? raw : await formatMdxJsxBlock(filePath, raw, config);
158
- if (formatted !== raw) {
159
- file.message(
160
- "Format MDX JSX block",
161
- child,
162
- "remark-lint:mdx-jsx-format"
163
- );
164
- }
165
- children.push({
166
- type: "html",
167
- value: formatted
168
- });
169
- continue;
170
- }
171
- await replaceMdxJsxFlowElements(child, source, filePath, config, file);
172
- children.push(child);
173
- }
174
- node.children = children;
175
- }
176
- async function formatMdxJsxBlock(filePath, value, config) {
177
- const formatted = await formatOxfmt(
178
- getBlockFilePath(filePath),
179
- wrapMdxJsxBlock(value),
180
- config
181
- );
182
- if (formatted === null) {
183
- return value;
184
- }
185
- return unwrapMdxJsxBlock(formatted) ?? value;
186
- }
187
- function wrapMdxJsxBlock(value) {
188
- return `const __mdx = (
1
+ import{i as e,n as t,r as n,t as r}from"./oxfmt-utils-CCT1qOHc.js";function remarkLintMdxJsxFormat(){return async function(t,r){let i=getFileValue(r);if(!i)return;let a;try{a=await e(r.path)}catch(e){r.message(`Unable to load oxfmt config: ${n(e)}`,{column:1,line:1},`remark-lint:mdx-jsx-format`),await replaceMdxJsxFlowElements(t,i,r.path,null,r);return}await replaceMdxJsxFlowElements(t,i,r.path,a,r)}}async function replaceMdxJsxFlowElements(e,t,n,r,i){if(!Array.isArray(e.children))return;let a=[];for(let o of e.children){if(o.type===`mdxJsxFlowElement`){let e=getSourceSlice(t,o);if(e===null){a.push(o);continue}let s=r===null||hasChildren(o)?e:await formatMdxJsxBlock(n,e,r);s!==e&&i.message(`Format MDX JSX block`,o,`remark-lint:mdx-jsx-format`),a.push({type:`html`,value:s});continue}await replaceMdxJsxFlowElements(o,t,n,r,i),a.push(o)}e.children=a}async function formatMdxJsxBlock(e,t,n){let i=await r(getBlockFilePath(e),wrapMdxJsxBlock(t),n);return i===null?t:unwrapMdxJsxBlock(i)??t}function wrapMdxJsxBlock(e){return`const __mdx = (
189
2
  <>
190
- ${value}
3
+ ${e}
191
4
  </>
192
5
  )
193
- `;
194
- }
195
- function unwrapMdxJsxBlock(value) {
196
- const lines = value.split(/\r?\n/u);
197
- const openIndex = lines.findIndex((line) => line.trim() === "<>");
198
- const closeIndex = lines.findIndex(
199
- (line, index) => index > openIndex && line.trim() === "</>"
200
- );
201
- if (openIndex === -1 || closeIndex === -1 || closeIndex <= openIndex + 1) {
202
- return null;
203
- }
204
- return lines.slice(openIndex + 1, closeIndex).map((line) => line.startsWith(" ") ? line.slice(4) : line).join("\n");
205
- }
206
- function getSourceSlice(source, node) {
207
- const start = node.position?.start?.offset;
208
- const end = node.position?.end?.offset;
209
- if (typeof start !== "number" || typeof end !== "number") {
210
- return null;
211
- }
212
- return source.slice(start, end);
213
- }
214
- function getFileValue(file) {
215
- return file.value ?? "";
216
- }
217
- function getBlockFilePath(filePath) {
218
- return `${getAbsolutePath(filePath)}.jsx.tsx`;
219
- }
220
- function hasChildren(node) {
221
- return Array.isArray(node.children) && node.children.length > 0;
222
- }
223
- export {
224
- remarkLintMdxJsxFormat as default
225
- };
226
- //# sourceMappingURL=remark-lint-mdx-jsx-format.js.map
6
+ `}function unwrapMdxJsxBlock(e){let t=e.split(/\r?\n/u),n=t.findIndex(e=>e.trim()===`<>`),r=t.findIndex((e,t)=>t>n&&e.trim()===`</>`);return n===-1||r===-1||r<=n+1?null:t.slice(n+1,r).map(e=>e.startsWith(` `)?e.slice(4):e).join(`
7
+ `)}function getSourceSlice(e,t){let n=t.position?.start?.offset,r=t.position?.end?.offset;return typeof n!=`number`||typeof r!=`number`?null:e.slice(n,r)}function getFileValue(e){return e.value??``}function getBlockFilePath(e){return`${t(e)}.jsx.tsx`}function hasChildren(e){return Array.isArray(e.children)&&e.children.length>0}export{remarkLintMdxJsxFormat as default};
8
+ //# sourceMappingURL=remark-lint-mdx-jsx-format.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/oxfmt-utils.ts", "../src/remark-lint-mdx-jsx-format.ts"],
4
- "sourcesContent": ["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {readFile} from \"node:fs/promises\"\nimport {dirname, isAbsolute, join, parse, resolve} from \"node:path\"\nimport {pathToFileURL} from \"node:url\"\nimport {format as formatCode, type FormatConfig} from \"oxfmt\"\nimport {parseConfigFileTextToJson} from \"typescript\"\n\nconst CONFIG_FILENAMES = [\".oxfmtrc.json\", \".oxfmtrc.jsonc\", \"oxfmt.config.ts\"]\nconst configCache = new Map<string, Promise<FormatConfig>>()\n\nexport async function loadOxfmtConfig(\n filePath: string | undefined,\n): Promise<FormatConfig> {\n const basePath = getAbsolutePath(filePath)\n const startDir = parse(basePath).ext ? dirname(basePath) : basePath\n const cachedConfig = configCache.get(startDir)\n\n if (cachedConfig) {\n return cachedConfig\n }\n\n const configPromise = findOxfmtConfig(startDir).catch((error: unknown) => {\n configCache.delete(startDir)\n throw error\n })\n\n configCache.set(startDir, configPromise)\n\n return configPromise\n}\n\nexport async function formatOxfmt(\n filePath: string,\n value: string,\n config: FormatConfig,\n): Promise<null | string> {\n try {\n const result = await formatCode(filePath, value, config)\n\n if (result.errors.length > 0) {\n return null\n }\n\n return removeFinalEol(result.code)\n } catch {\n return null\n }\n}\n\nexport function getAbsolutePath(filePath: string | undefined): string {\n if (!filePath) {\n return process.cwd()\n }\n\n return isAbsolute(filePath) ? filePath : resolve(process.cwd(), filePath)\n}\n\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message\n }\n\n return String(error)\n}\n\nasync function findOxfmtConfig(startDir: string): Promise<FormatConfig> {\n let currentDir = startDir\n\n while (true) {\n for (const configFilename of CONFIG_FILENAMES) {\n const configPath = join(currentDir, configFilename)\n const config = await readOxfmtConfig(configPath, configFilename)\n\n if (config) {\n return config\n }\n }\n\n const parentDir = dirname(currentDir)\n\n if (parentDir === currentDir) {\n return {}\n }\n\n currentDir = parentDir\n }\n}\n\nasync function readOxfmtConfig(\n configPath: string,\n configFilename: string,\n): Promise<FormatConfig | null> {\n if (configFilename === \"oxfmt.config.ts\") {\n return readTypeScriptConfig(configPath)\n }\n\n const source = await readOptionalFile(configPath)\n\n if (source === null) {\n return null\n }\n\n if (configFilename.endsWith(\".jsonc\")) {\n return validateConfig(configPath, readJsoncConfig(configPath, source))\n }\n\n return validateConfig(configPath, JSON.parse(source))\n}\n\nasync function readTypeScriptConfig(\n configPath: string,\n): Promise<FormatConfig | null> {\n const source = await readOptionalFile(configPath)\n\n if (source === null) {\n return null\n }\n\n const url = pathToFileURL(configPath)\n url.searchParams.set(\"cache\", Date.now().toString())\n\n const module = (await import(url.href)) as {default?: unknown}\n\n return validateConfig(configPath, module.default)\n}\n\nfunction readJsoncConfig(configPath: string, source: string): unknown {\n const result = parseConfigFileTextToJson(configPath, source)\n\n if (result.error) {\n throw new Error(String(result.error.messageText as string))\n }\n\n return result.config\n}\n\nfunction validateConfig(configPath: string, config: unknown): FormatConfig {\n if (!isPlainConfig(config)) {\n throw new Error(`${configPath} must define an object`)\n }\n\n return config as FormatConfig\n}\n\nasync function readOptionalFile(path: string): Promise<null | string> {\n try {\n return await readFile(path, \"utf8\")\n } catch (error) {\n if (isMissingFileError(error)) {\n return null\n }\n\n throw error\n }\n}\n\nfunction removeFinalEol(value: string): string {\n return value.replace(/\\r?\\n$/u, \"\")\n}\n\nfunction isPlainConfig(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false\n }\n\n const {code} = error\n\n return code === \"ENOENT\" || code === \"ENOTDIR\"\n}\n", "// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {FormatConfig} from \"oxfmt\"\n\nimport {\n formatOxfmt,\n getAbsolutePath,\n getErrorMessage,\n loadOxfmtConfig,\n} from \"./oxfmt-utils.js\"\nimport type {RemarkFile, RemarkNode, RemarkTransformer} from \"./remark-types.js\"\n\nexport default function remarkLintMdxJsxFormat(): RemarkTransformer {\n return async function transform(tree, file) {\n const source = getFileValue(file)\n\n if (!source) {\n return\n }\n\n let oxfmtConfig\n\n try {\n oxfmtConfig = await loadOxfmtConfig(file.path)\n } catch (error) {\n file.message(\n `Unable to load oxfmt config: ${getErrorMessage(error)}`,\n {column: 1, line: 1},\n \"remark-lint:mdx-jsx-format\",\n )\n await replaceMdxJsxFlowElements(tree, source, file.path, null, file)\n return\n }\n\n await replaceMdxJsxFlowElements(tree, source, file.path, oxfmtConfig, file)\n }\n}\n\nasync function replaceMdxJsxFlowElements(\n node: RemarkNode,\n source: string,\n filePath: string | undefined,\n config: FormatConfig | null,\n file: RemarkFile,\n): Promise<void> {\n if (!Array.isArray(node.children)) {\n return\n }\n\n const children: RemarkNode[] = []\n\n for (const child of node.children) {\n if (child.type === \"mdxJsxFlowElement\") {\n const raw = getSourceSlice(source, child)\n\n if (raw === null) {\n children.push(child)\n continue\n }\n\n const formatted =\n config === null || hasChildren(child)\n ? raw\n : await formatMdxJsxBlock(filePath, raw, config)\n\n if (formatted !== raw) {\n file.message(\n \"Format MDX JSX block\",\n child,\n \"remark-lint:mdx-jsx-format\",\n )\n }\n\n children.push({\n type: \"html\",\n value: formatted,\n })\n continue\n }\n\n await replaceMdxJsxFlowElements(child, source, filePath, config, file)\n children.push(child)\n }\n\n node.children = children\n}\n\nasync function formatMdxJsxBlock(\n filePath: string | undefined,\n value: string,\n config: FormatConfig,\n): Promise<string> {\n const formatted = await formatOxfmt(\n getBlockFilePath(filePath),\n wrapMdxJsxBlock(value),\n config,\n )\n\n if (formatted === null) {\n return value\n }\n\n return unwrapMdxJsxBlock(formatted) ?? value\n}\n\nfunction wrapMdxJsxBlock(value: string): string {\n return `const __mdx = (\n <>\n${value}\n </>\n)\n`\n}\n\nfunction unwrapMdxJsxBlock(value: string): null | string {\n const lines = value.split(/\\r?\\n/u)\n const openIndex = lines.findIndex((line) => line.trim() === \"<>\")\n const closeIndex = lines.findIndex(\n (line, index) => index > openIndex && line.trim() === \"</>\",\n )\n\n if (openIndex === -1 || closeIndex === -1 || closeIndex <= openIndex + 1) {\n return null\n }\n\n return lines\n .slice(openIndex + 1, closeIndex)\n .map((line) => (line.startsWith(\" \") ? line.slice(4) : line))\n .join(\"\\n\")\n}\n\nfunction getSourceSlice(source: string, node: RemarkNode): null | string {\n const start = node.position?.start?.offset\n const end = node.position?.end?.offset\n\n if (typeof start !== \"number\" || typeof end !== \"number\") {\n return null\n }\n\n return source.slice(start, end)\n}\n\nfunction getFileValue(file: RemarkFile): string {\n return (file.value ?? \"\") as string\n}\n\nfunction getBlockFilePath(filePath: string | undefined): string {\n return `${getAbsolutePath(filePath)}.jsx.tsx`\n}\n\nfunction hasChildren(node: RemarkNode): boolean {\n return Array.isArray(node.children) && node.children.length > 0\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
1
+ {"version":3,"file":"remark-lint-mdx-jsx-format.js","names":[],"sources":["../src/remark-lint-mdx-jsx-format.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {FormatConfig} from \"oxfmt\"\n\nimport {\n formatOxfmt,\n getAbsolutePath,\n getErrorMessage,\n loadOxfmtConfig,\n} from \"./oxfmt-utils.js\"\nimport type {RemarkFile, RemarkNode, RemarkTransformer} from \"./remark-types.js\"\n\nexport default function remarkLintMdxJsxFormat(): RemarkTransformer {\n return async function transform(tree, file) {\n const source = getFileValue(file)\n\n if (!source) {\n return\n }\n\n let oxfmtConfig\n\n try {\n oxfmtConfig = await loadOxfmtConfig(file.path)\n } catch (error) {\n file.message(\n `Unable to load oxfmt config: ${getErrorMessage(error)}`,\n {column: 1, line: 1},\n \"remark-lint:mdx-jsx-format\",\n )\n await replaceMdxJsxFlowElements(tree, source, file.path, null, file)\n return\n }\n\n await replaceMdxJsxFlowElements(tree, source, file.path, oxfmtConfig, file)\n }\n}\n\nasync function replaceMdxJsxFlowElements(\n node: RemarkNode,\n source: string,\n filePath: string | undefined,\n config: FormatConfig | null,\n file: RemarkFile,\n): Promise<void> {\n if (!Array.isArray(node.children)) {\n return\n }\n\n const children: RemarkNode[] = []\n\n for (const child of node.children) {\n if (child.type === \"mdxJsxFlowElement\") {\n const raw = getSourceSlice(source, child)\n\n if (raw === null) {\n children.push(child)\n continue\n }\n\n const formatted =\n config === null || hasChildren(child)\n ? raw\n : await formatMdxJsxBlock(filePath, raw, config)\n\n if (formatted !== raw) {\n file.message(\n \"Format MDX JSX block\",\n child,\n \"remark-lint:mdx-jsx-format\",\n )\n }\n\n children.push({\n type: \"html\",\n value: formatted,\n })\n continue\n }\n\n await replaceMdxJsxFlowElements(child, source, filePath, config, file)\n children.push(child)\n }\n\n node.children = children\n}\n\nasync function formatMdxJsxBlock(\n filePath: string | undefined,\n value: string,\n config: FormatConfig,\n): Promise<string> {\n const formatted = await formatOxfmt(\n getBlockFilePath(filePath),\n wrapMdxJsxBlock(value),\n config,\n )\n\n if (formatted === null) {\n return value\n }\n\n return unwrapMdxJsxBlock(formatted) ?? value\n}\n\nfunction wrapMdxJsxBlock(value: string): string {\n return `const __mdx = (\n <>\n${value}\n </>\n)\n`\n}\n\nfunction unwrapMdxJsxBlock(value: string): null | string {\n const lines = value.split(/\\r?\\n/u)\n const openIndex = lines.findIndex((line) => line.trim() === \"<>\")\n const closeIndex = lines.findIndex(\n (line, index) => index > openIndex && line.trim() === \"</>\",\n )\n\n if (openIndex === -1 || closeIndex === -1 || closeIndex <= openIndex + 1) {\n return null\n }\n\n return lines\n .slice(openIndex + 1, closeIndex)\n .map((line) => (line.startsWith(\" \") ? line.slice(4) : line))\n .join(\"\\n\")\n}\n\nfunction getSourceSlice(source: string, node: RemarkNode): null | string {\n const start = node.position?.start?.offset\n const end = node.position?.end?.offset\n\n if (typeof start !== \"number\" || typeof end !== \"number\") {\n return null\n }\n\n return source.slice(start, end)\n}\n\nfunction getFileValue(file: RemarkFile): string {\n return (file.value ?? \"\") as string\n}\n\nfunction getBlockFilePath(filePath: string | undefined): string {\n return `${getAbsolutePath(filePath)}.jsx.tsx`\n}\n\nfunction hasChildren(node: RemarkNode): boolean {\n return Array.isArray(node.children) && node.children.length > 0\n}\n"],"mappings":"mEAaA,SAAwB,wBAA4C,CAClE,OAAO,eAAyB,EAAM,EAAM,CAC1C,IAAM,EAAS,aAAa,EAAK,CAEjC,GAAI,CAAC,EACH,OAGF,IAAI,EAEJ,GAAI,CACF,EAAc,MAAM,EAAgB,EAAK,KAAK,OACvC,EAAO,CACd,EAAK,QACH,gCAAgC,EAAgB,EAAM,GACtD,CAAC,OAAQ,EAAG,KAAM,EAAE,CACpB,6BACD,CACD,MAAM,0BAA0B,EAAM,EAAQ,EAAK,KAAM,KAAM,EAAK,CACpE,OAGF,MAAM,0BAA0B,EAAM,EAAQ,EAAK,KAAM,EAAa,EAAK,EAI/E,eAAe,0BACb,EACA,EACA,EACA,EACA,EACe,CACf,GAAI,CAAC,MAAM,QAAQ,EAAK,SAAS,CAC/B,OAGF,IAAM,EAAyB,EAAE,CAEjC,IAAK,IAAM,KAAS,EAAK,SAAU,CACjC,GAAI,EAAM,OAAS,oBAAqB,CACtC,IAAM,EAAM,eAAe,EAAQ,EAAM,CAEzC,GAAI,IAAQ,KAAM,CAChB,EAAS,KAAK,EAAM,CACpB,SAGF,IAAM,EACJ,IAAW,MAAQ,YAAY,EAAM,CACjC,EACA,MAAM,kBAAkB,EAAU,EAAK,EAAO,CAEhD,IAAc,GAChB,EAAK,QACH,uBACA,EACA,6BACD,CAGH,EAAS,KAAK,CACZ,KAAM,OACN,MAAO,EACR,CAAC,CACF,SAGF,MAAM,0BAA0B,EAAO,EAAQ,EAAU,EAAQ,EAAK,CACtE,EAAS,KAAK,EAAM,CAGtB,EAAK,SAAW,EAGlB,eAAe,kBACb,EACA,EACA,EACiB,CACjB,IAAM,EAAY,MAAM,EACtB,iBAAiB,EAAS,CAC1B,gBAAgB,EAAM,CACtB,EACD,CAMD,OAJI,IAAc,KACT,EAGF,kBAAkB,EAAU,EAAI,EAGzC,SAAS,gBAAgB,EAAuB,CAC9C,MAAO;;EAEP,EAAM;;;EAMR,SAAS,kBAAkB,EAA8B,CACvD,IAAM,EAAQ,EAAM,MAAM,SAAS,CAC7B,EAAY,EAAM,UAAW,GAAS,EAAK,MAAM,GAAK,KAAK,CAC3D,EAAa,EAAM,WACtB,EAAM,IAAU,EAAQ,GAAa,EAAK,MAAM,GAAK,MACvD,CAMD,OAJI,IAAc,IAAM,IAAe,IAAM,GAAc,EAAY,EAC9D,KAGF,EACJ,MAAM,EAAY,EAAG,EAAW,CAChC,IAAK,GAAU,EAAK,WAAW,OAAO,CAAG,EAAK,MAAM,EAAE,CAAG,EAAM,CAC/D,KAAK;EAAK,CAGf,SAAS,eAAe,EAAgB,EAAiC,CACvE,IAAM,EAAQ,EAAK,UAAU,OAAO,OAC9B,EAAM,EAAK,UAAU,KAAK,OAMhC,OAJI,OAAO,GAAU,UAAY,OAAO,GAAQ,SACvC,KAGF,EAAO,MAAM,EAAO,EAAI,CAGjC,SAAS,aAAa,EAA0B,CAC9C,OAAQ,EAAK,OAAS,GAGxB,SAAS,iBAAiB,EAAsC,CAC9D,MAAO,GAAG,EAAgB,EAAS,CAAC,UAGtC,SAAS,YAAY,EAA2B,CAC9C,OAAO,MAAM,QAAQ,EAAK,SAAS,EAAI,EAAK,SAAS,OAAS"}
@@ -1,32 +1,2 @@
1
- // src/remark-preserve-alert-markers.ts
2
- var ALERT_MARKER_PATTERN = /^\\?\[!(?:note|tip|success|warning|caution)(?:\/[^\]\n]+)?\]/iu;
3
- function remarkPreserveAlertMarkers() {
4
- const extensions = getToMarkdownExtensions(this);
5
- const data = this.data();
6
- data.toMarkdownExtensions = [
7
- ...extensions,
8
- {
9
- handlers: {
10
- text: preserveAlertMarkerText
11
- }
12
- }
13
- ];
14
- }
15
- function preserveAlertMarkerText(node, parent, state, info) {
16
- const value = state.safe(node.value, info);
17
- if (!isAlertMarkerText(node, parent, state)) {
18
- return value;
19
- }
20
- return value.replace(/^\\(?=\[!)/u, "");
21
- }
22
- function isAlertMarkerText(node, parent, state) {
23
- return parent?.type === "paragraph" && parent.children?.[0] === node && state.stack.includes("blockquote") && ALERT_MARKER_PATTERN.test(node.value);
24
- }
25
- function getToMarkdownExtensions(processor) {
26
- const { toMarkdownExtensions } = processor.data();
27
- return Array.isArray(toMarkdownExtensions) ? toMarkdownExtensions : [];
28
- }
29
- export {
30
- remarkPreserveAlertMarkers as default
31
- };
32
- //# sourceMappingURL=remark-preserve-alert-markers.js.map
1
+ var e=/^\\?\[!(?:note|tip|success|warning|caution)(?:\/[^\]\n]+)?\]/iu;function remarkPreserveAlertMarkers(){let e=getToMarkdownExtensions(this),t=this.data();t.toMarkdownExtensions=[...e,{handlers:{text:preserveAlertMarkerText}}]}function preserveAlertMarkerText(e,t,n,r){let i=n.safe(e.value,r);return isAlertMarkerText(e,t,n)?i.replace(/^\\(?=\[!)/u,``):i}function isAlertMarkerText(t,n,r){return n?.type===`paragraph`&&n.children?.[0]===t&&r.stack.includes(`blockquote`)&&e.test(t.value)}function getToMarkdownExtensions(e){let{toMarkdownExtensions:t}=e.data();return Array.isArray(t)?t:[]}export{remarkPreserveAlertMarkers as default};
2
+ //# sourceMappingURL=remark-preserve-alert-markers.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/remark-preserve-alert-markers.ts"],
4
- "sourcesContent": ["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Processor} from \"unified\"\n\ninterface MarkdownExtension {\n handlers?: {\n text?: MarkdownHandler\n }\n}\n\ninterface MarkdownInfo {\n after?: string\n before?: string\n}\n\ninterface MarkdownNode {\n type: string\n value: string\n}\n\ninterface MarkdownParent {\n children?: MarkdownNode[]\n type: string\n}\n\ninterface MarkdownState {\n safe: (value: string, info: MarkdownInfo) => string\n stack: string[]\n}\n\ninterface MarkdownProcessorData {\n toMarkdownExtensions?: MarkdownExtension[]\n}\n\ntype MarkdownHandler = (\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n info: MarkdownInfo,\n) => string\n\nconst ALERT_MARKER_PATTERN =\n /^\\\\?\\[!(?:note|tip|success|warning|caution)(?:\\/[^\\]\\n]+)?\\]/iu\n\nexport default function remarkPreserveAlertMarkers(this: Processor): void {\n const extensions = getToMarkdownExtensions(this)\n\n // mdx/remark fixes reserialize the whole file. Register with the markdown\n // stringifier so alert markers keep the syntax consumed by the docs runtime.\n const data = this.data() as MarkdownProcessorData\n data.toMarkdownExtensions = [\n ...extensions,\n {\n handlers: {\n text: preserveAlertMarkerText,\n },\n },\n ]\n}\n\nfunction preserveAlertMarkerText(\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n info: MarkdownInfo,\n): string {\n const value = state.safe(node.value, info)\n\n if (!isAlertMarkerText(node, parent, state)) {\n return value\n }\n\n return value.replace(/^\\\\(?=\\[!)/u, \"\")\n}\n\nfunction isAlertMarkerText(\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n): boolean {\n return (\n parent?.type === \"paragraph\" &&\n parent.children?.[0] === node &&\n state.stack.includes(\"blockquote\") &&\n ALERT_MARKER_PATTERN.test(node.value)\n )\n}\n\nfunction getToMarkdownExtensions(processor: Processor): MarkdownExtension[] {\n const {toMarkdownExtensions} = processor.data() as MarkdownProcessorData\n\n return Array.isArray(toMarkdownExtensions) ? toMarkdownExtensions : []\n}\n"],
5
- "mappings": ";AA0CA,IAAM,uBACJ;AAEa,SAAR,6BAAmE;AACxE,QAAM,aAAa,wBAAwB,IAAI;AAI/C,QAAM,OAAO,KAAK,KAAK;AACvB,OAAK,uBAAuB;AAAA,IAC1B,GAAG;AAAA,IACH;AAAA,MACE,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,wBACP,MACA,QACA,OACA,MACQ;AACR,QAAM,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI;AAEzC,MAAI,CAAC,kBAAkB,MAAM,QAAQ,KAAK,GAAG;AAC3C,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,QAAQ,eAAe,EAAE;AACxC;AAEA,SAAS,kBACP,MACA,QACA,OACS;AACT,SACE,QAAQ,SAAS,eACjB,OAAO,WAAW,CAAC,MAAM,QACzB,MAAM,MAAM,SAAS,YAAY,KACjC,qBAAqB,KAAK,KAAK,KAAK;AAExC;AAEA,SAAS,wBAAwB,WAA2C;AAC1E,QAAM,EAAC,qBAAoB,IAAI,UAAU,KAAK;AAE9C,SAAO,MAAM,QAAQ,oBAAoB,IAAI,uBAAuB,CAAC;AACvE;",
6
- "names": []
7
- }
1
+ {"version":3,"file":"remark-preserve-alert-markers.js","names":[],"sources":["../src/remark-preserve-alert-markers.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Processor} from \"unified\"\n\ninterface MarkdownExtension {\n handlers?: {\n text?: MarkdownHandler\n }\n}\n\ninterface MarkdownInfo {\n after?: string\n before?: string\n}\n\ninterface MarkdownNode {\n type: string\n value: string\n}\n\ninterface MarkdownParent {\n children?: MarkdownNode[]\n type: string\n}\n\ninterface MarkdownState {\n safe: (value: string, info: MarkdownInfo) => string\n stack: string[]\n}\n\ninterface MarkdownProcessorData {\n toMarkdownExtensions?: MarkdownExtension[]\n}\n\ntype MarkdownHandler = (\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n info: MarkdownInfo,\n) => string\n\nconst ALERT_MARKER_PATTERN =\n /^\\\\?\\[!(?:note|tip|success|warning|caution)(?:\\/[^\\]\\n]+)?\\]/iu\n\nexport default function remarkPreserveAlertMarkers(this: Processor): void {\n const extensions = getToMarkdownExtensions(this)\n\n // mdx/remark fixes reserialize the whole file. Register with the markdown\n // stringifier so alert markers keep the syntax consumed by the docs runtime.\n const data = this.data() as MarkdownProcessorData\n data.toMarkdownExtensions = [\n ...extensions,\n {\n handlers: {\n text: preserveAlertMarkerText,\n },\n },\n ]\n}\n\nfunction preserveAlertMarkerText(\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n info: MarkdownInfo,\n): string {\n const value = state.safe(node.value, info)\n\n if (!isAlertMarkerText(node, parent, state)) {\n return value\n }\n\n return value.replace(/^\\\\(?=\\[!)/u, \"\")\n}\n\nfunction isAlertMarkerText(\n node: MarkdownNode,\n parent: MarkdownParent | undefined,\n state: MarkdownState,\n): boolean {\n return (\n parent?.type === \"paragraph\" &&\n parent.children?.[0] === node &&\n state.stack.includes(\"blockquote\") &&\n ALERT_MARKER_PATTERN.test(node.value)\n )\n}\n\nfunction getToMarkdownExtensions(processor: Processor): MarkdownExtension[] {\n const {toMarkdownExtensions} = processor.data() as MarkdownProcessorData\n\n return Array.isArray(toMarkdownExtensions) ? toMarkdownExtensions : []\n}\n"],"mappings":"AA0CA,IAAM,EACJ,iEAEF,SAAwB,4BAAkD,CACxE,IAAM,EAAa,wBAAwB,KAAK,CAI1C,EAAO,KAAK,MAAM,CACxB,EAAK,qBAAuB,CAC1B,GAAG,EACH,CACE,SAAU,CACR,KAAM,wBACP,CACF,CACF,CAGH,SAAS,wBACP,EACA,EACA,EACA,EACQ,CACR,IAAM,EAAQ,EAAM,KAAK,EAAK,MAAO,EAAK,CAM1C,OAJK,kBAAkB,EAAM,EAAQ,EAAM,CAIpC,EAAM,QAAQ,cAAe,GAAG,CAH9B,EAMX,SAAS,kBACP,EACA,EACA,EACS,CACT,OACE,GAAQ,OAAS,aACjB,EAAO,WAAW,KAAO,GACzB,EAAM,MAAM,SAAS,aAAa,EAClC,EAAqB,KAAK,EAAK,MAAM,CAIzC,SAAS,wBAAwB,EAA2C,CAC1E,GAAM,CAAC,wBAAwB,EAAU,MAAM,CAE/C,OAAO,MAAM,QAAQ,EAAqB,CAAG,EAAuB,EAAE"}
@@ -1,12 +1,3 @@
1
- import remarkPreserveAlertMarkers from "./remark-preserve-alert-markers.js";
2
- declare const remarkConfig: {
3
- plugins: (string | typeof remarkPreserveAlertMarkers | (string | {
4
- size: number;
5
- })[])[];
6
- settings: {
7
- bullet: string;
8
- rule: string;
9
- };
10
- };
1
+ declare const remarkConfig: any;
11
2
  export default remarkConfig;
12
3
  //# sourceMappingURL=remarkrc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remarkrc.d.ts","sourceRoot":"","sources":["../src/remarkrc.ts"],"names":[],"mappings":"AAKA,OAAO,0BAA0B,MAAM,oCAAoC,CAAA;AAE3E,QAAA,MAAM,YAAY;;;;;;;;CAqBjB,CAAA;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"remarkrc.d.ts","sourceRoot":"","sources":["../src/remarkrc.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,YAAY,EAAE,GAqBnB,CAAA;AAED,eAAe,YAAY,CAAA"}