From dc565fe6a5554eb8bf51803ccda218365d341293 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Sat, 23 Sep 2023 23:02:39 +0800
Subject: [PATCH 01/21] chore: release v0.0.1 (#14)
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 8a5101c..5b736a5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.1-beta.1",
+ "version": "0.0.1",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
@@ -103,4 +103,4 @@
"typescript": "^5.2.2",
"vitest": "^0.34.5"
}
-}
\ No newline at end of file
+}
From 40637ad5407d9f4872e528e1648c3a4c12b882ab Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 21 Nov 2023 20:29:05 +0800
Subject: [PATCH 02/21] chore: update playgrounds (#15)
---
README.md | 93 +++++--------------------------------------------------
1 file changed, 7 insertions(+), 86 deletions(-)
diff --git a/README.md b/README.md
index 88967aa..c0c4d67 100644
--- a/README.md
+++ b/README.md
@@ -221,89 +221,10 @@ VueSource({
});
```
-## Playground
-
-
+## Playgrounds
+
+| Source code | Online trial |
+| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
+| [Rollup + Vue2](https://github.com/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/rollup) | [StackBlitz](https://stackblitz.com/github/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/rollup) |
+| [Vite + Vue3](https://github.com/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/vite) | [StackBlitz](https://stackblitz.com/github/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/vite) |
+| [Webpack + Vue3](https://github.com/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/webpack) | [StackBlitz](https://stackblitz.com/github/zjxxxxxxxxx/unplugin-vue-source/tree/main/examples/webpack) |
From 01c438da1d02b0af0139f7510c5f18abd6385e0e Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 28 Nov 2023 19:12:51 +0800
Subject: [PATCH 03/21] feat: Customize `include` and `exclude` options (#16)
---
README.md | 26 +++++++++++++++++-------
package.json | 1 +
pnpm-lock.yaml | 18 ++++++++++++++++-
src/core/filter_ID.ts | 26 ------------------------
src/core/index.ts | 42 +++++++++++++++++++++++++++++----------
src/core/parse_ID.ts | 20 ++++++++-----------
src/core/transform.ts | 14 +++++--------
src/core/transform_JSX.ts | 1 +
src/core/transform_SFC.ts | 8 ++++----
src/types.ts | 7 +++++++
10 files changed, 94 insertions(+), 69 deletions(-)
delete mode 100644 src/core/filter_ID.ts
diff --git a/README.md b/README.md
index c0c4d67..ef0154b 100644
--- a/README.md
+++ b/README.md
@@ -212,13 +212,25 @@ build({
The following show the default values of the configuration
```ts
-VueSource({
- // source root path
- root: process.cwd(),
-
- // generate sourceMap
- sourceMap: false,
-});
+interface Options {
+ /**
+ * source root path
+ *
+ * @default process.cwd()
+ */
+ root?: string;
+ /**
+ * generate sourceMap
+ *
+ * @default false
+ */
+ sourceMap?: boolean;
+
+ /** @default '**\/*.{vue,jsx.tsx}' */
+ include?: string | RegExp | (string | RegExp)[];
+ /** @default 'node_modules/**' */
+ exclude?: string | RegExp | (string | RegExp)[];
+}
```
## Playgrounds
diff --git a/package.json b/package.json
index 5b736a5..8ef9fd3 100644
--- a/package.json
+++ b/package.json
@@ -88,6 +88,7 @@
"@babel/parser": "^7.22.16",
"@babel/plugin-syntax-jsx": "^7.22.5",
"@babel/plugin-syntax-typescript": "^7.22.5",
+ "@rollup/pluginutils": "^5.0.5",
"@vue/compiler-dom": "^3.3.4",
"magic-string": "^0.30.3",
"unplugin": "^1.4.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8440705..ea7ee5e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,6 +20,9 @@ importers:
'@babel/plugin-syntax-typescript':
specifier: ^7.22.5
version: 7.22.5(@babel/core@7.22.17)
+ '@rollup/pluginutils':
+ specifier: ^5.0.5
+ version: 5.0.5
'@vue/compiler-dom':
specifier: ^3.3.4
version: 3.3.4
@@ -2783,6 +2786,20 @@ packages:
rollup: 3.29.1
dev: true
+ /@rollup/pluginutils@5.0.5:
+ resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.1
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: false
+
/@sideway/address@4.1.4:
resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
dependencies:
@@ -2904,7 +2921,6 @@ packages:
/@types/estree@1.0.1:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
- dev: true
/@types/express-serve-static-core@4.17.36:
resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==}
diff --git a/src/core/filter_ID.ts b/src/core/filter_ID.ts
deleted file mode 100644
index 3f7bcaf..0000000
--- a/src/core/filter_ID.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { TRACE_ID } from './constants';
-import { parse_ID } from './parse_ID';
-
-export function filter_ID(id: string) {
- const parsed = parse_ID(id);
-
- if (parsed.isJsx) {
- return true;
- }
-
- if (parsed.isSfc) {
- const { query } = parsed;
- // vue cli | vue-loader
- if (query.type === 'template') {
- return true;
- }
- return (
- // vite-plugin-vue
- !query[TRACE_ID] &&
- // rollup-plugin-vue
- !query['rollup-plugin-vue']
- );
- }
-
- return false;
-}
diff --git a/src/core/index.ts b/src/core/index.ts
index 9ed92fc..2788708 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -1,8 +1,9 @@
-import type { UnpluginFactory } from 'unplugin';
-import { createUnplugin } from 'unplugin';
-import type { Options } from '../types';
-import { filter_ID } from './filter_ID';
+import { type UnpluginFactory, createUnplugin } from 'unplugin';
+import { createFilter } from '@rollup/pluginutils';
+import { type ResolvedOptions, type Options } from '../types';
+import { TRACE_ID } from './constants';
import { transform } from './transform';
+import { parse_ID } from './parse_ID';
export const unpluginFactory: UnpluginFactory = (options = {}) => {
if (process.env.NODE_ENV !== 'development') {
@@ -12,23 +13,44 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
}
const opts = resolveOptions(options);
+ const filter = createFilter(opts.include, opts.exclude);
return {
name: 'unplugin-vue-source',
enforce: 'pre',
- transformInclude: filter_ID,
+ transformInclude(id) {
+ if (filter(id)) {
+ const parsed = parse_ID(id);
+
+ if (parsed.isSfc) {
+ const { query } = parsed;
+ // vue cli | vue-loader
+ if (query.type === 'template') {
+ return true;
+ }
+ return (
+ // vite-plugin-vue
+ !query[TRACE_ID] &&
+ // rollup-plugin-vue
+ !query['rollup-plugin-vue']
+ );
+ }
+
+ return true;
+ }
+ },
transform(code, id) {
return transform(code, id, opts);
},
};
};
-function resolveOptions(options: Options): Required {
- const { root = process.cwd(), sourceMap = false } = options;
-
+function resolveOptions(opts: Options): ResolvedOptions {
return {
- root,
- sourceMap,
+ root: opts.root ?? process.cwd(),
+ sourceMap: opts.sourceMap ?? false,
+ include: opts.include ?? '**/*.{vue,jsx.tsx}',
+ exclude: opts.exclude ?? 'node_modules/**',
};
}
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index 6ba18be..bbf2d64 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -2,29 +2,25 @@ import { extname } from 'path';
import { TRACE_ID } from './constants';
export interface VueQuery extends Record {
- vue?: boolean;
type?: 'script' | 'template' | 'style' | 'custom';
[TRACE_ID]?: string;
}
export function parse_ID(id: string, root = '') {
const [file, rawQuery] = id.split('?', 2);
-
const ext = extname(file).slice(1);
- const isSfc = ext === 'vue';
- const isTsx = ext === 'tsx';
- const isJsx = isTsx || ext === 'jsx';
- const query = Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery;
- if (query.vue != null) {
- query.vue = true;
+ if (ext === 'vue') {
+ return {
+ file: file.replace(root, ''),
+ isSfc: true,
+ query: Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery,
+ };
}
return {
file: file.replace(root, ''),
- isSfc,
- isTsx,
- isJsx,
- query,
+ isJsx: true,
+ isTsx: ext.includes('ts'),
};
}
diff --git a/src/core/transform.ts b/src/core/transform.ts
index dc5c38b..f1cc962 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -1,24 +1,20 @@
-import type { Position } from '@vue/compiler-dom';
+import { type Position } from '@vue/compiler-dom';
import MagicString from 'magic-string';
-import type { Options } from '../types';
+import { type ResolvedOptions } from '../types';
import { TRACE_ID } from './constants';
import { parse_ID } from './parse_ID';
import { transform_SFC } from './transform_SFC';
import { transform_JSX } from './transform_JSX';
-export function transform(
- code: string,
- id: string,
- options: Required,
-) {
+export function transform(code: string, id: string, options: ResolvedOptions) {
const { root, sourceMap } = options;
const s = new MagicString(code);
-
const parsed = parse_ID(id, root);
+
if (parsed.isSfc) {
transform_SFC(code, replace);
- } else if (parsed.isJsx) {
+ } else {
transform_JSX(code, replace, parsed);
}
diff --git a/src/core/transform_JSX.ts b/src/core/transform_JSX.ts
index a5d03dc..bbbba1e 100644
--- a/src/core/transform_JSX.ts
+++ b/src/core/transform_JSX.ts
@@ -35,6 +35,7 @@ export function transform_JSX(
const { start } = node.loc!;
const name = getJSXElementName(nameNode);
const offset = start.index + startIndex + name.length + 1;
+
cb({
...start,
// babel starts at 0, so we need to add 1
diff --git a/src/core/transform_SFC.ts b/src/core/transform_SFC.ts
index f9fdbd5..4518657 100644
--- a/src/core/transform_SFC.ts
+++ b/src/core/transform_SFC.ts
@@ -20,10 +20,8 @@ export function transform_SFC(code: string, cb: (pos: Position) => void) {
) {
const { start } = node.loc;
const offset = start.offset + node.tag.length + 1;
- cb({
- ...start,
- offset,
- });
+
+ cb({ ...start, offset });
}
},
],
@@ -49,6 +47,8 @@ function resolveJsxOptions(ast: RootNode) {
) as AttributeNode;
if (!langProp) return;
+ //
+ //
const lang = langProp.value?.content;
const isTsx = lang === 'tsx';
const isJsx = isTsx || lang === 'jsx';
diff --git a/src/types.ts b/src/types.ts
index f749929..c85d956 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -11,4 +11,11 @@ export interface Options {
* @default false
*/
sourceMap?: boolean;
+
+ /** @default '**\/*.{vue,jsx.tsx}' */
+ include?: string | RegExp | (string | RegExp)[];
+ /** @default 'node_modules/**' */
+ exclude?: string | RegExp | (string | RegExp)[];
}
+
+export type ResolvedOptions = Required;
From 6168d9c4997b0c1a32b5565e7c2a20ee9ebddc63 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 28 Nov 2023 19:46:35 +0800
Subject: [PATCH 04/21] fix: webpack filter error (#17)
---
README.md | 2 +-
src/core/index.ts | 19 ++++++++-----------
src/types.ts | 2 +-
3 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index ef0154b..4bbefd4 100644
--- a/README.md
+++ b/README.md
@@ -226,7 +226,7 @@ interface Options {
*/
sourceMap?: boolean;
- /** @default '**\/*.{vue,jsx.tsx}' */
+ /** @default '**\/*.{vue,jsx,tsx}' */
include?: string | RegExp | (string | RegExp)[];
/** @default 'node_modules/**' */
exclude?: string | RegExp | (string | RegExp)[];
diff --git a/src/core/index.ts b/src/core/index.ts
index 2788708..d6727a0 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -2,8 +2,8 @@ import { type UnpluginFactory, createUnplugin } from 'unplugin';
import { createFilter } from '@rollup/pluginutils';
import { type ResolvedOptions, type Options } from '../types';
import { TRACE_ID } from './constants';
-import { transform } from './transform';
import { parse_ID } from './parse_ID';
+import { transform } from './transform';
export const unpluginFactory: UnpluginFactory = (options = {}) => {
if (process.env.NODE_ENV !== 'development') {
@@ -18,16 +18,12 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
return {
name: 'unplugin-vue-source',
enforce: 'pre',
+
transformInclude(id) {
- if (filter(id)) {
- const parsed = parse_ID(id);
-
- if (parsed.isSfc) {
- const { query } = parsed;
- // vue cli | vue-loader
- if (query.type === 'template') {
- return true;
- }
+ const { file, isSfc, query } = parse_ID(id);
+
+ if (filter(file)) {
+ if (isSfc && query.type !== 'template') {
return (
// vite-plugin-vue
!query[TRACE_ID] &&
@@ -36,6 +32,7 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
);
}
+ // vue cli | vue-loader | tsx | jsx
return true;
}
},
@@ -49,7 +46,7 @@ function resolveOptions(opts: Options): ResolvedOptions {
return {
root: opts.root ?? process.cwd(),
sourceMap: opts.sourceMap ?? false,
- include: opts.include ?? '**/*.{vue,jsx.tsx}',
+ include: opts.include ?? '**/*.{vue,jsx,tsx}',
exclude: opts.exclude ?? 'node_modules/**',
};
}
diff --git a/src/types.ts b/src/types.ts
index c85d956..5371bc9 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -12,7 +12,7 @@ export interface Options {
*/
sourceMap?: boolean;
- /** @default '**\/*.{vue,jsx.tsx}' */
+ /** @default '**\/*.{vue,jsx,tsx}' */
include?: string | RegExp | (string | RegExp)[];
/** @default 'node_modules/**' */
exclude?: string | RegExp | (string | RegExp)[];
From 60f75236ced0e89ded6bf03172ad66a91a5eda71 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 28 Nov 2023 20:22:55 +0800
Subject: [PATCH 05/21] chore: release v0.0.2 (#18)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 8ef9fd3..12eea3f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.1",
+ "version": "0.0.2",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
From 24f53db28e531116d933c78954dc2c5e58d6483a Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Sat, 9 Dec 2023 10:30:49 +0800
Subject: [PATCH 06/21] fix: `process.env.NODE_ENV` is undefined (#19)
---
src/core/index.ts | 3 ++-
src/core/isDev.ts | 3 +++
src/vue.ts | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)
create mode 100644 src/core/isDev.ts
diff --git a/src/core/index.ts b/src/core/index.ts
index d6727a0..04969fc 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -2,11 +2,12 @@ import { type UnpluginFactory, createUnplugin } from 'unplugin';
import { createFilter } from '@rollup/pluginutils';
import { type ResolvedOptions, type Options } from '../types';
import { TRACE_ID } from './constants';
+import { isDev } from './isDev';
import { parse_ID } from './parse_ID';
import { transform } from './transform';
export const unpluginFactory: UnpluginFactory = (options = {}) => {
- if (process.env.NODE_ENV !== 'development') {
+ if (!isDev()) {
return {
name: 'unplugin-vue-source',
};
diff --git a/src/core/isDev.ts b/src/core/isDev.ts
new file mode 100644
index 0000000..c56b541
--- /dev/null
+++ b/src/core/isDev.ts
@@ -0,0 +1,3 @@
+export function isDev() {
+ return !(process.env.NODE_ENV && process.env.NODE_ENV !== 'development');
+}
diff --git a/src/vue.ts b/src/vue.ts
index 4f2baa4..660a315 100644
--- a/src/vue.ts
+++ b/src/vue.ts
@@ -1,7 +1,8 @@
import { TRACE_ID } from './core/constants';
+import { isDev } from './core/isDev';
export default {
install(app: any) {
- if (process.env.NODE_ENV === 'development') {
+ if (isDev()) {
app.mixin({
props: {
[TRACE_ID]: String,
From ce946cab65496582b68ec08541d7cd82e7aa4b79 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Sat, 9 Dec 2023 10:34:08 +0800
Subject: [PATCH 07/21] fix: Filter files with `raw` (#20)
---
src/core/index.ts | 2 +-
src/core/parse_ID.ts | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/core/index.ts b/src/core/index.ts
index 04969fc..379fecb 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -23,7 +23,7 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
transformInclude(id) {
const { file, isSfc, query } = parse_ID(id);
- if (filter(file)) {
+ if (query.raw == null && filter(file)) {
if (isSfc && query.type !== 'template') {
return (
// vite-plugin-vue
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index bbf2d64..fc5039c 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -3,18 +3,20 @@ import { TRACE_ID } from './constants';
export interface VueQuery extends Record {
type?: 'script' | 'template' | 'style' | 'custom';
+ raw?: string;
[TRACE_ID]?: string;
}
export function parse_ID(id: string, root = '') {
const [file, rawQuery] = id.split('?', 2);
const ext = extname(file).slice(1);
+ const query = Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery;
if (ext === 'vue') {
return {
file: file.replace(root, ''),
isSfc: true,
- query: Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery,
+ query,
};
}
@@ -22,5 +24,6 @@ export function parse_ID(id: string, root = '') {
file: file.replace(root, ''),
isJsx: true,
isTsx: ext.includes('ts'),
+ query,
};
}
From 13d1ee0056fc583ea883cc27a1a5e584b952de20 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Mon, 11 Dec 2023 16:11:11 +0800
Subject: [PATCH 08/21] chore: release v0.0.3 (#21)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 12eea3f..53c9825 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.2",
+ "version": "0.0.3",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
From d117d0fb3e8b3249b13fcfa59afbc8f81fe1830c Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Mon, 11 Dec 2023 19:09:01 +0800
Subject: [PATCH 09/21] feat: Add option `babelParserPlugins` (#22)
---
README.md | 17 +++++++----
examples/rollup/src/components/Github.vue | 16 +++++++++++
examples/rollup/src/components/HelloWorld.tsx | 8 ++----
examples/vite/src/components/Github.vue | 16 +++++++++++
examples/vite/src/components/HelloWorld.tsx | 9 ++----
examples/vite/vite.config.ts | 3 ++
examples/webpack/src/components/Github.vue | 16 +++++++++++
.../webpack/src/components/HelloWorld.tsx | 9 ++----
examples/webpack/vue.config.js | 9 ++++--
src/core/index.ts | 23 ++++-----------
src/core/parse_ID.ts | 12 ++------
src/core/transform.ts | 12 +++++---
src/core/transform_JSX.ts | 11 +++++---
src/core/transform_SFC.ts | 28 +++++++++++--------
src/types.ts | 17 ++++++++---
test/fixtures.test.ts | 10 +++++--
test/fixtures/vue-skip/input.vue | 3 ++
test/fixtures/vue-skip/options.ts | 4 +++
test/fixtures/vue-skip/output.vue | 3 ++
19 files changed, 146 insertions(+), 80 deletions(-)
create mode 100644 examples/rollup/src/components/Github.vue
create mode 100644 examples/vite/src/components/Github.vue
create mode 100644 examples/webpack/src/components/Github.vue
create mode 100644 test/fixtures/vue-skip/input.vue
create mode 100644 test/fixtures/vue-skip/options.ts
create mode 100644 test/fixtures/vue-skip/output.vue
diff --git a/README.md b/README.md
index 4bbefd4..6fe6fc9 100644
--- a/README.md
+++ b/README.md
@@ -212,7 +212,12 @@ build({
The following show the default values of the configuration
```ts
-interface Options {
+export interface Options {
+ /** @default '**\/*.{vue,jsx,tsx}' */
+ include?: string | RegExp | (string | RegExp)[];
+ /** @default 'node_modules/**' */
+ exclude?: string | RegExp | (string | RegExp)[];
+
/**
* source root path
*
@@ -226,10 +231,12 @@ interface Options {
*/
sourceMap?: boolean;
- /** @default '**\/*.{vue,jsx,tsx}' */
- include?: string | RegExp | (string | RegExp)[];
- /** @default 'node_modules/**' */
- exclude?: string | RegExp | (string | RegExp)[];
+ /**
+ * Array containing the plugins that you want to enable.
+ *
+ * @default ['jsx', 'typescript']
+ */
+ babelParserPlugins?: ParserPlugin[];
}
```
diff --git a/examples/rollup/src/components/Github.vue b/examples/rollup/src/components/Github.vue
new file mode 100644
index 0000000..b7787c9
--- /dev/null
+++ b/examples/rollup/src/components/Github.vue
@@ -0,0 +1,16 @@
+
diff --git a/examples/rollup/src/components/HelloWorld.tsx b/examples/rollup/src/components/HelloWorld.tsx
index 9902618..2ee292d 100644
--- a/examples/rollup/src/components/HelloWorld.tsx
+++ b/examples/rollup/src/components/HelloWorld.tsx
@@ -1,4 +1,5 @@
import { defineComponent } from 'vue';
+import Github from './Github.vue';
export default defineComponent({
props: { msg: String },
@@ -10,12 +11,7 @@ export default defineComponent({
Inspect the element to see the __source
-
- Github
-
+
);
diff --git a/examples/vite/src/components/Github.vue b/examples/vite/src/components/Github.vue
new file mode 100644
index 0000000..b7787c9
--- /dev/null
+++ b/examples/vite/src/components/Github.vue
@@ -0,0 +1,16 @@
+
diff --git a/examples/vite/src/components/HelloWorld.tsx b/examples/vite/src/components/HelloWorld.tsx
index 5f6c5e6..b09dbcc 100644
--- a/examples/vite/src/components/HelloWorld.tsx
+++ b/examples/vite/src/components/HelloWorld.tsx
@@ -1,3 +1,5 @@
+import Github from './Github.vue';
+
export default function HelloWorld({ msg }: { msg: string }) {
return (
<>
@@ -6,12 +8,7 @@ export default function HelloWorld({ msg }: { msg: string }) {
Inspect the element to see the __source
-
- Github
-
+
>
);
diff --git a/examples/vite/vite.config.ts b/examples/vite/vite.config.ts
index 106ea9f..79778ce 100644
--- a/examples/vite/vite.config.ts
+++ b/examples/vite/vite.config.ts
@@ -11,4 +11,7 @@ export default defineConfig({
jsxFragment: 'Fragment',
jsxInject: "import { h, Fragment } from 'vue';",
},
+ server: {
+ port: 3000,
+ },
});
diff --git a/examples/webpack/src/components/Github.vue b/examples/webpack/src/components/Github.vue
new file mode 100644
index 0000000..b7787c9
--- /dev/null
+++ b/examples/webpack/src/components/Github.vue
@@ -0,0 +1,16 @@
+
diff --git a/examples/webpack/src/components/HelloWorld.tsx b/examples/webpack/src/components/HelloWorld.tsx
index 5f6c5e6..b09dbcc 100644
--- a/examples/webpack/src/components/HelloWorld.tsx
+++ b/examples/webpack/src/components/HelloWorld.tsx
@@ -1,3 +1,5 @@
+import Github from './Github.vue';
+
export default function HelloWorld({ msg }: { msg: string }) {
return (
<>
@@ -6,12 +8,7 @@ export default function HelloWorld({ msg }: { msg: string }) {
Inspect the element to see the __source
-
- Github
-
+
>
);
diff --git a/examples/webpack/vue.config.js b/examples/webpack/vue.config.js
index 108b8ab..3d2c4a3 100644
--- a/examples/webpack/vue.config.js
+++ b/examples/webpack/vue.config.js
@@ -1,9 +1,12 @@
-const { defineConfig } = require("@vue/cli-service");
+const { defineConfig } = require('@vue/cli-service');
module.exports = defineConfig({
configureWebpack: {
plugins: [
- require("unplugin-vue-source/webpack")(),
- require("unplugin-vue-jsx/webpack")(),
+ require('unplugin-vue-source/webpack')(),
+ require('unplugin-vue-jsx/webpack')(),
],
},
+ devServer: {
+ port: 3000,
+ },
});
diff --git a/src/core/index.ts b/src/core/index.ts
index 379fecb..648a0fc 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -1,7 +1,6 @@
import { type UnpluginFactory, createUnplugin } from 'unplugin';
import { createFilter } from '@rollup/pluginutils';
import { type ResolvedOptions, type Options } from '../types';
-import { TRACE_ID } from './constants';
import { isDev } from './isDev';
import { parse_ID } from './parse_ID';
import { transform } from './transform';
@@ -21,21 +20,8 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
enforce: 'pre',
transformInclude(id) {
- const { file, isSfc, query } = parse_ID(id);
-
- if (query.raw == null && filter(file)) {
- if (isSfc && query.type !== 'template') {
- return (
- // vite-plugin-vue
- !query[TRACE_ID] &&
- // rollup-plugin-vue
- !query['rollup-plugin-vue']
- );
- }
-
- // vue cli | vue-loader | tsx | jsx
- return true;
- }
+ const { file, query } = parse_ID(id);
+ return query.raw == null && filter(file);
},
transform(code, id) {
return transform(code, id, opts);
@@ -45,10 +31,11 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
function resolveOptions(opts: Options): ResolvedOptions {
return {
- root: opts.root ?? process.cwd(),
- sourceMap: opts.sourceMap ?? false,
include: opts.include ?? '**/*.{vue,jsx,tsx}',
exclude: opts.exclude ?? 'node_modules/**',
+ root: opts.root ?? process.cwd(),
+ sourceMap: opts.sourceMap ?? false,
+ babelParserPlugins: opts.babelParserPlugins ?? [],
};
}
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index fc5039c..befb97c 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -12,18 +12,10 @@ export function parse_ID(id: string, root = '') {
const ext = extname(file).slice(1);
const query = Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery;
- if (ext === 'vue') {
- return {
- file: file.replace(root, ''),
- isSfc: true,
- query,
- };
- }
-
return {
file: file.replace(root, ''),
- isJsx: true,
- isTsx: ext.includes('ts'),
+ isSfc: ext === 'vue',
+ isTsx: ext.startsWith('ts'),
query,
};
}
diff --git a/src/core/transform.ts b/src/core/transform.ts
index f1cc962..1142272 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -6,16 +6,20 @@ import { parse_ID } from './parse_ID';
import { transform_SFC } from './transform_SFC';
import { transform_JSX } from './transform_JSX';
-export function transform(code: string, id: string, options: ResolvedOptions) {
- const { root, sourceMap } = options;
+const skipRE = new RegExp(` ${TRACE_ID}=['"].+:[0-9]+:[0-9]+['"]`);
+
+export function transform(code: string, id: string, opts: ResolvedOptions) {
+ if (skipRE.test(code)) return;
+
+ const { root, sourceMap } = opts;
const s = new MagicString(code);
const parsed = parse_ID(id, root);
if (parsed.isSfc) {
- transform_SFC(code, replace);
+ transform_SFC(code, replace, opts);
} else {
- transform_JSX(code, replace, parsed);
+ transform_JSX(code, replace, parsed, opts);
}
function replace(pos: Position) {
diff --git a/src/core/transform_JSX.ts b/src/core/transform_JSX.ts
index bbbba1e..0c66c47 100644
--- a/src/core/transform_JSX.ts
+++ b/src/core/transform_JSX.ts
@@ -1,6 +1,7 @@
-import type { Position } from '@vue/compiler-dom';
+import { type Position } from '@vue/compiler-dom';
import { traverse, types as t } from '@babel/core';
import { parse, ParserPlugin } from '@babel/parser';
+import { type ResolvedOptions } from '../types';
export function transform_JSX(
code: string,
@@ -11,17 +12,19 @@ export function transform_JSX(
startLine?: number;
startColumn?: number;
},
+ opts: ResolvedOptions,
) {
const { isTsx, startIndex = 0, startLine = 1, startColumn = 1 } = options;
- const plugins: ParserPlugin[] = ['jsx'];
+ const pluginSet = new Set(opts.babelParserPlugins);
+ pluginSet.add('jsx');
if (isTsx) {
- plugins.push('typescript');
+ pluginSet.add('typescript');
}
const ast = parse(code, {
sourceType: 'unambiguous',
- plugins,
+ plugins: [...pluginSet] as ParserPlugin[],
startLine,
// babel start at 0
startColumn: startColumn - 1,
diff --git a/src/core/transform_SFC.ts b/src/core/transform_SFC.ts
index 4518657..5e2b6ae 100644
--- a/src/core/transform_SFC.ts
+++ b/src/core/transform_SFC.ts
@@ -1,15 +1,21 @@
-import type {
- ElementNode,
- AttributeNode,
- Position,
- RootNode,
- TextNode,
+import {
+ type ElementNode,
+ type AttributeNode,
+ type Position,
+ type RootNode,
+ type TextNode,
+ parse,
+ transform,
} from '@vue/compiler-dom';
-import { parse, transform } from '@vue/compiler-dom';
+import { type ResolvedOptions } from '../types';
import { NodeTypes, TagTypes } from './constants';
import { transform_JSX } from './transform_JSX';
-export function transform_SFC(code: string, cb: (pos: Position) => void) {
+export function transform_SFC(
+ code: string,
+ cb: (pos: Position) => void,
+ opts: ResolvedOptions,
+) {
const ast = parse(code);
transform(ast, {
nodeTransforms: [
@@ -27,13 +33,13 @@ export function transform_SFC(code: string, cb: (pos: Position) => void) {
],
});
- const jsxOpts = resolveJsxOptions(ast);
+ const jsxOpts = resolveJsxOptsByScript(ast);
if (jsxOpts) {
- transform_JSX(jsxOpts.code, cb, jsxOpts);
+ transform_JSX(jsxOpts.code, cb, jsxOpts, opts);
}
}
-function resolveJsxOptions(ast: RootNode) {
+function resolveJsxOptsByScript(ast: RootNode) {
const scriptNode = (ast.children as ElementNode[]).find(
(node) => node.tag === 'script',
);
diff --git a/src/types.ts b/src/types.ts
index 5371bc9..9bc3dda 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,4 +1,11 @@
+import { ParserPlugin } from '@babel/parser';
+
export interface Options {
+ /** @default '**\/*.{vue,jsx,tsx}' */
+ include?: string | RegExp | (string | RegExp)[];
+ /** @default 'node_modules/**' */
+ exclude?: string | RegExp | (string | RegExp)[];
+
/**
* source root path
*
@@ -12,10 +19,12 @@ export interface Options {
*/
sourceMap?: boolean;
- /** @default '**\/*.{vue,jsx,tsx}' */
- include?: string | RegExp | (string | RegExp)[];
- /** @default 'node_modules/**' */
- exclude?: string | RegExp | (string | RegExp)[];
+ /**
+ * Array containing the plugins that you want to enable.
+ *
+ * @default ['jsx', 'typescript']
+ */
+ babelParserPlugins?: ParserPlugin[];
}
export type ResolvedOptions = Required;
diff --git a/test/fixtures.test.ts b/test/fixtures.test.ts
index e02b09d..07274c8 100644
--- a/test/fixtures.test.ts
+++ b/test/fixtures.test.ts
@@ -1,5 +1,5 @@
import { readFileSync } from 'node:fs';
-import { extname, join, resolve } from 'node:path';
+import { basename, dirname, extname, join, resolve } from 'node:path';
import { expect, test } from 'vitest';
import { format, Options } from 'prettier';
import fg from 'fast-glob';
@@ -19,7 +19,11 @@ test.each(fixtures)('transform %s', async (name) => {
const input = readCodeString(filename);
const output = readCodeString(filename, `output${extname(filename)}`);
- const result = transform(input, filename, options);
+ const result = transform(input, filename, options)!;
+
+ if (basename(dirname(name)) === 'vue-skip') {
+ return expect(result).toBeUndefined();
+ }
expect(
await formatCode(result.code, {
@@ -35,7 +39,7 @@ test.each(fixtures)('transform %s', async (name) => {
}),
).toEqual(sourceMap);
} else {
- expect(result.map).toBe(null);
+ expect(result.map).toBeNull();
}
});
diff --git a/test/fixtures/vue-skip/input.vue b/test/fixtures/vue-skip/input.vue
new file mode 100644
index 0000000..a1364ce
--- /dev/null
+++ b/test/fixtures/vue-skip/input.vue
@@ -0,0 +1,3 @@
+
+ test
+
diff --git a/test/fixtures/vue-skip/options.ts b/test/fixtures/vue-skip/options.ts
new file mode 100644
index 0000000..19d8e2b
--- /dev/null
+++ b/test/fixtures/vue-skip/options.ts
@@ -0,0 +1,4 @@
+export default {
+ root: process.cwd(),
+ sourceMap: false,
+};
diff --git a/test/fixtures/vue-skip/output.vue b/test/fixtures/vue-skip/output.vue
new file mode 100644
index 0000000..a1364ce
--- /dev/null
+++ b/test/fixtures/vue-skip/output.vue
@@ -0,0 +1,3 @@
+
+ test
+
From 0d62cef0a9f4528878c045d243d994e034ae0405 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 12 Dec 2023 22:22:05 +0800
Subject: [PATCH 10/21] feat: Transform `mdx` (#23)
---
package.json | 2 +
pnpm-lock.yaml | 836 +++++++++++++++++++++++++++++++++++
src/core/parse_ID.ts | 1 +
src/core/transform.ts | 3 +
src/core/transform_MDX.ts | 25 ++
test/fixtures.test.ts | 7 +-
test/fixtures/md/input.md | 5 +
test/fixtures/md/options.ts | 4 +
test/fixtures/md/output.md | 5 +
test/fixtures/mdx/input.mdx | 7 +
test/fixtures/mdx/options.ts | 4 +
test/fixtures/mdx/output.mdx | 7 +
tsup.config.ts | 2 +
13 files changed, 907 insertions(+), 1 deletion(-)
create mode 100644 src/core/transform_MDX.ts
create mode 100644 test/fixtures/md/input.md
create mode 100644 test/fixtures/md/options.ts
create mode 100644 test/fixtures/md/output.md
create mode 100644 test/fixtures/mdx/input.mdx
create mode 100644 test/fixtures/mdx/options.ts
create mode 100644 test/fixtures/mdx/output.mdx
diff --git a/package.json b/package.json
index 53c9825..fe7686e 100644
--- a/package.json
+++ b/package.json
@@ -88,9 +88,11 @@
"@babel/parser": "^7.22.16",
"@babel/plugin-syntax-jsx": "^7.22.5",
"@babel/plugin-syntax-typescript": "^7.22.5",
+ "@mdx-js/mdx": "^3.0.0",
"@rollup/pluginutils": "^5.0.5",
"@vue/compiler-dom": "^3.3.4",
"magic-string": "^0.30.3",
+ "unist-util-visit": "^5.0.0",
"unplugin": "^1.4.0"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ea7ee5e..2399fcb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,6 +20,9 @@ importers:
'@babel/plugin-syntax-typescript':
specifier: ^7.22.5
version: 7.22.5(@babel/core@7.22.17)
+ '@mdx-js/mdx':
+ specifier: ^3.0.0
+ version: 3.0.0
'@rollup/pluginutils':
specifier: ^5.0.5
version: 5.0.5
@@ -29,6 +32,9 @@ importers:
magic-string:
specifier: ^0.30.3
version: 0.30.3
+ unist-util-visit:
+ specifier: ^5.0.0
+ version: 5.0.0
unplugin:
specifier: ^1.4.0
version: 1.4.0
@@ -2669,6 +2675,36 @@ packages:
resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
dev: true
+ /@mdx-js/mdx@3.0.0:
+ resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 3.0.3
+ '@types/mdx': 2.0.10
+ collapse-white-space: 2.1.0
+ devlop: 1.1.0
+ estree-util-build-jsx: 3.0.1
+ estree-util-is-identifier-name: 3.0.0
+ estree-util-to-js: 2.0.0
+ estree-walker: 3.0.3
+ hast-util-to-estree: 3.1.0
+ hast-util-to-jsx-runtime: 2.3.0
+ markdown-extensions: 2.0.0
+ periscopic: 3.1.0
+ remark-mdx: 3.0.0
+ remark-parse: 11.0.0
+ remark-rehype: 11.0.0
+ source-map: 0.7.4
+ unified: 11.0.4
+ unist-util-position-from-estree: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/@node-ipc/js-queue@2.0.3:
resolution: {integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==}
engines: {node: '>=1.0.0'}
@@ -2840,6 +2876,12 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
+ /@types/acorn@4.0.6:
+ resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+ dependencies:
+ '@types/estree': 1.0.1
+ dev: false
+
/@types/babel__core@7.20.2:
resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==}
dependencies:
@@ -2905,6 +2947,12 @@ packages:
'@types/node': 20.6.0
dev: true
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: false
+
/@types/eslint-scope@3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
dependencies:
@@ -2919,6 +2967,12 @@ packages:
'@types/json-schema': 7.0.12
dev: true
+ /@types/estree-jsx@1.0.3:
+ resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==}
+ dependencies:
+ '@types/estree': 1.0.1
+ dev: false
+
/@types/estree@1.0.1:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
@@ -2940,6 +2994,12 @@ packages:
'@types/serve-static': 1.15.2
dev: true
+ /@types/hast@3.0.3:
+ resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
/@types/html-minifier-terser@6.1.0:
resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
dev: true
@@ -2958,6 +3018,16 @@ packages:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
+ /@types/mdast@4.0.3:
+ resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /@types/mdx@2.0.10:
+ resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==}
+ dev: false
+
/@types/mime@1.3.2:
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
dev: true
@@ -2970,6 +3040,10 @@ packages:
resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
dev: true
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: false
+
/@types/node@20.6.0:
resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
dev: true
@@ -3025,6 +3099,14 @@ packages:
'@types/node': 20.6.0
dev: true
+ /@types/unist@2.0.10:
+ resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ dev: false
+
+ /@types/unist@3.0.2:
+ resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+ dev: false
+
/@types/webpack-env@1.18.1:
resolution: {integrity: sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==}
dev: true
@@ -3035,6 +3117,10 @@ packages:
'@types/node': 20.6.0
dev: true
+ /@ungap/structured-clone@1.2.0:
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ dev: false
+
/@vitejs/plugin-vue@4.2.3(vite@4.4.5)(vue@3.3.4):
resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -3781,6 +3867,14 @@ packages:
acorn: 8.10.0
dev: true
+ /acorn-jsx@5.3.2(acorn@8.10.0):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.10.0
+ dev: false
+
/acorn-walk@8.2.0:
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
engines: {node: '>=0.4.0'}
@@ -3968,6 +4062,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /astring@1.8.6:
+ resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==}
+ hasBin: true
+ dev: false
+
/async-each@1.0.6:
resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==}
dev: true
@@ -4116,6 +4215,10 @@ packages:
esutils: 2.0.3
dev: true
+ /bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+ dev: false
+
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -4430,6 +4533,10 @@ packages:
engines: {node: '>=4'}
dev: true
+ /ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+ dev: false
+
/chai@4.3.8:
resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==}
engines: {node: '>=4'}
@@ -4507,6 +4614,22 @@ packages:
- supports-color
dev: true
+ /character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+ dev: false
+
+ /character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ dev: false
+
+ /character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+ dev: false
+
+ /character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+ dev: false
+
/check-error@1.0.2:
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
dev: true
@@ -4640,6 +4763,10 @@ packages:
engines: {node: '>=0.8'}
dev: true
+ /collapse-white-space@2.1.0:
+ resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
+ dev: false
+
/collection-visit@1.0.0:
resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
engines: {node: '>=0.10.0'}
@@ -4680,6 +4807,10 @@ packages:
engines: {node: '>=0.1.90'}
dev: true
+ /comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+ dev: false
+
/commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
@@ -5237,6 +5368,12 @@ packages:
dependencies:
ms: 2.1.2
+ /decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+ dependencies:
+ character-entities: 2.0.2
+ dev: false
+
/decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
@@ -5345,6 +5482,11 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: false
+
/destr@1.2.2:
resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==}
dev: true
@@ -5362,6 +5504,12 @@ packages:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
dev: true
+ /devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+ dependencies:
+ dequal: 2.0.3
+ dev: false
+
/diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5575,6 +5723,40 @@ packages:
engines: {node: '>=4.0'}
dev: true
+ /estree-util-attach-comments@3.0.0:
+ resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
+ dependencies:
+ '@types/estree': 1.0.1
+ dev: false
+
+ /estree-util-build-jsx@3.0.1:
+ resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ estree-walker: 3.0.3
+ dev: false
+
+ /estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+ dev: false
+
+ /estree-util-to-js@2.0.0:
+ resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ astring: 1.8.6
+ source-map: 0.7.4
+ dev: false
+
+ /estree-util-visit@2.0.0:
+ resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/unist': 3.0.2
+ dev: false
+
/estree-walker@0.2.1:
resolution: {integrity: sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ==}
dev: true
@@ -5586,6 +5768,12 @@ packages:
/estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ /estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+ dependencies:
+ '@types/estree': 1.0.1
+ dev: false
+
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -5762,6 +5950,10 @@ packages:
is-extendable: 1.0.1
dev: true
+ /extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: false
+
/extglob@2.0.4:
resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
engines: {node: '>=0.10.0'}
@@ -6230,6 +6422,57 @@ packages:
resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
dev: true
+ /hast-util-to-estree@3.1.0:
+ resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==}
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-attach-comments: 3.0.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.0
+ mdast-util-mdx-jsx: 3.0.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 6.4.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.4.4
+ unist-util-position: 5.0.0
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /hast-util-to-jsx-runtime@2.3.0:
+ resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==}
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/hast': 3.0.3
+ '@types/unist': 3.0.2
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.0
+ mdast-util-mdx-jsx: 3.0.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 6.4.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 1.0.5
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+ dependencies:
+ '@types/hast': 3.0.3
+ dev: false
+
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
@@ -6463,6 +6706,14 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
+ /inline-style-parser@0.1.1:
+ resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
+ dev: false
+
+ /inline-style-parser@0.2.2:
+ resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==}
+ dev: false
+
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -6487,6 +6738,17 @@ packages:
kind-of: 6.0.3
dev: true
+ /is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+ dev: false
+
+ /is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+ dev: false
+
/is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: true
@@ -6542,6 +6804,10 @@ packages:
kind-of: 6.0.3
dev: true
+ /is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+ dev: false
+
/is-descriptor@0.1.6:
resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
engines: {node: '>=0.10.0'}
@@ -6617,6 +6883,10 @@ packages:
dependencies:
is-extglob: 2.1.1
+ /is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+ dev: false
+
/is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
@@ -6650,6 +6920,11 @@ packages:
engines: {node: '>=10'}
dev: true
+ /is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+ dev: false
+
/is-plain-object@2.0.4:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
engines: {node: '>=0.10.0'}
@@ -6668,6 +6943,12 @@ packages:
'@types/estree': 1.0.1
dev: true
+ /is-reference@3.0.2:
+ resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+ dependencies:
+ '@types/estree': 1.0.1
+ dev: false
+
/is-stream@1.1.0:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
engines: {node: '>=0.10.0'}
@@ -7016,6 +7297,10 @@ packages:
wrap-ansi: 3.0.1
dev: true
+ /longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+ dev: false
+
/loupe@2.3.6:
resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
dependencies:
@@ -7083,6 +7368,127 @@ packages:
object-visit: 1.0.1
dev: true
+ /markdown-extensions@2.0.0:
+ resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
+ engines: {node: '>=16'}
+ dev: false
+
+ /mdast-util-from-markdown@2.0.0:
+ resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
+ dependencies:
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-decode-string: 2.0.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdx-expression@2.0.0:
+ resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdx-jsx@3.0.0:
+ resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.3
+ unist-util-remove-position: 5.0.0
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdx@3.0.0:
+ resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
+ dependencies:
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-mdx-expression: 2.0.0
+ mdast-util-mdx-jsx: 3.0.0
+ mdast-util-mdxjs-esm: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+ dependencies:
+ '@types/estree-jsx': 1.0.3
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-phrasing@4.0.0:
+ resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
+ dependencies:
+ '@types/mdast': 4.0.3
+ unist-util-is: 6.0.0
+ dev: false
+
+ /mdast-util-to-hast@13.0.2:
+ resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==}
+ dependencies:
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ '@ungap/structured-clone': 1.2.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.0
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ dev: false
+
+ /mdast-util-to-markdown@2.1.0:
+ resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
+ dependencies:
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.0.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-decode-string: 2.0.0
+ unist-util-visit: 5.0.0
+ zwitch: 2.0.4
+ dev: false
+
+ /mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+ dependencies:
+ '@types/mdast': 4.0.3
+ dev: false
+
/mdn-data@2.0.14:
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
dev: true
@@ -7123,6 +7529,268 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /micromark-core-commonmark@2.0.0:
+ resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.0
+ micromark-factory-label: 2.0.0
+ micromark-factory-space: 2.0.0
+ micromark-factory-title: 2.0.0
+ micromark-factory-whitespace: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-chunked: 2.0.0
+ micromark-util-classify-character: 2.0.0
+ micromark-util-html-tag-name: 2.0.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-resolve-all: 2.0.0
+ micromark-util-subtokenize: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-extension-mdx-expression@3.0.0:
+ resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==}
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-factory-mdx-expression: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-extension-mdx-jsx@3.0.0:
+ resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==}
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ micromark-factory-mdx-expression: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ vfile-message: 4.0.2
+ dev: false
+
+ /micromark-extension-mdx-md@2.0.0:
+ resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
+ dependencies:
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-extension-mdxjs-esm@3.0.0:
+ resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.2
+ dev: false
+
+ /micromark-extension-mdxjs@3.0.0:
+ resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
+ dependencies:
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
+ micromark-extension-mdx-expression: 3.0.0
+ micromark-extension-mdx-jsx: 3.0.0
+ micromark-extension-mdx-md: 2.0.0
+ micromark-extension-mdxjs-esm: 3.0.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-destination@2.0.0:
+ resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-label@2.0.0:
+ resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==}
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.2
+ dev: false
+
+ /micromark-factory-space@2.0.0:
+ resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-title@2.0.0:
+ resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-whitespace@2.0.0:
+ resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-character@2.0.1:
+ resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-chunked@2.0.0:
+ resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-classify-character@2.0.0:
+ resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-combine-extensions@2.0.0:
+ resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
+ dependencies:
+ micromark-util-chunked: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-decode-numeric-character-reference@2.0.1:
+ resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-decode-string@2.0.0:
+ resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-encode@2.0.0:
+ resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
+ dev: false
+
+ /micromark-util-events-to-acorn@2.0.2:
+ resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==}
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.1
+ '@types/unist': 3.0.2
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ vfile-message: 4.0.2
+ dev: false
+
+ /micromark-util-html-tag-name@2.0.0:
+ resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
+ dev: false
+
+ /micromark-util-normalize-identifier@2.0.0:
+ resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-resolve-all@2.0.0:
+ resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
+ dependencies:
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-sanitize-uri@2.0.0:
+ resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-encode: 2.0.0
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-subtokenize@2.0.0:
+ resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==}
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-symbol@2.0.0:
+ resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
+ dev: false
+
+ /micromark-util-types@2.0.0:
+ resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
+ dev: false
+
+ /micromark@4.0.0:
+ resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.0
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-chunked: 2.0.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-encode: 2.0.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-resolve-all: 2.0.0
+ micromark-util-sanitize-uri: 2.0.0
+ micromark-util-subtokenize: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/micromatch@3.1.10:
resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
engines: {node: '>=0.10.0'}
@@ -7695,6 +8363,19 @@ packages:
callsites: 3.1.0
dev: true
+ /parse-entities@4.0.1:
+ resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+ dependencies:
+ '@types/unist': 2.0.10
+ character-entities: 2.0.2
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.0.2
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+ dev: false
+
/parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -7796,6 +8477,14 @@ packages:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: true
+ /periscopic@3.1.0:
+ resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+ dependencies:
+ '@types/estree': 1.0.1
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+ dev: false
+
/picocolors@0.2.1:
resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
dev: true
@@ -8321,6 +9010,10 @@ packages:
sisteransi: 1.0.5
dev: true
+ /property-information@6.4.0:
+ resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==}
+ dev: false
+
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -8504,6 +9197,36 @@ packages:
engines: {node: '>= 0.10'}
dev: true
+ /remark-mdx@3.0.0:
+ resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==}
+ dependencies:
+ mdast-util-mdx: 3.0.0
+ micromark-extension-mdxjs: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+ dependencies:
+ '@types/mdast': 4.0.3
+ mdast-util-from-markdown: 2.0.0
+ micromark-util-types: 2.0.0
+ unified: 11.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-rehype@11.0.0:
+ resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==}
+ dependencies:
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ mdast-util-to-hast: 13.0.2
+ unified: 11.0.4
+ vfile: 6.0.1
+ dev: false
+
/remove-trailing-separator@1.1.0:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
dev: true
@@ -8991,6 +9714,11 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
+ /source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+ dev: false
+
/source-map@0.8.0-beta.0:
resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
engines: {node: '>= 8'}
@@ -8998,6 +9726,10 @@ packages:
whatwg-url: 7.1.0
dev: true
+ /space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+ dev: false
+
/spdx-correct@3.2.0:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
@@ -9150,6 +9882,13 @@ packages:
safe-buffer: 5.2.1
dev: true
+ /stringify-entities@4.0.3:
+ resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+ dev: false
+
/strip-ansi@4.0.0:
resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
engines: {node: '>=4'}
@@ -9194,6 +9933,18 @@ packages:
resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
dev: true
+ /style-to-object@0.4.4:
+ resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
+ dependencies:
+ inline-style-parser: 0.1.1
+ dev: false
+
+ /style-to-object@1.0.5:
+ resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==}
+ dependencies:
+ inline-style-parser: 0.2.2
+ dev: false
+
/stylehacks@5.1.1(postcss@8.4.29):
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -9434,6 +10185,14 @@ packages:
hasBin: true
dev: true
+ /trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+ dev: false
+
+ /trough@2.1.0:
+ resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
+ dev: false
+
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
@@ -9572,6 +10331,18 @@ packages:
engines: {node: '>=4'}
dev: true
+ /unified@11.0.4:
+ resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
+ dependencies:
+ '@types/unist': 3.0.2
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.1.0
+ vfile: 6.0.1
+ dev: false
+
/union-value@1.0.1:
resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
engines: {node: '>=0.10.0'}
@@ -9582,6 +10353,52 @@ packages:
set-value: 2.0.1
dev: true
+ /unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /unist-util-position-from-estree@2.0.0:
+ resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /unist-util-remove-position@5.0.0:
+ resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-visit: 5.0.0
+ dev: false
+
+ /unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-is: 6.0.0
+ dev: false
+
+ /unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+ dev: false
+
/universalify@2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
@@ -9716,6 +10533,21 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /vfile-message@4.0.2:
+ resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-stringify-position: 4.0.0
+ dev: false
+
+ /vfile@6.0.1:
+ resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.2
+ dev: false
+
/vite-node@0.34.5(@types/node@20.6.0):
resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==}
engines: {node: '>=v14.18.0'}
@@ -10325,3 +11157,7 @@ packages:
normalize-path: 1.0.0
strip-indent: 2.0.0
dev: true
+
+ /zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+ dev: false
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index befb97c..6a0e0dd 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -16,6 +16,7 @@ export function parse_ID(id: string, root = '') {
file: file.replace(root, ''),
isSfc: ext === 'vue',
isTsx: ext.startsWith('ts'),
+ isMdx: ext.startsWith('md'),
query,
};
}
diff --git a/src/core/transform.ts b/src/core/transform.ts
index 1142272..f533b58 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -4,6 +4,7 @@ import { type ResolvedOptions } from '../types';
import { TRACE_ID } from './constants';
import { parse_ID } from './parse_ID';
import { transform_SFC } from './transform_SFC';
+import { transform_MDX } from './transform_MDX';
import { transform_JSX } from './transform_JSX';
const skipRE = new RegExp(` ${TRACE_ID}=['"].+:[0-9]+:[0-9]+['"]`);
@@ -18,6 +19,8 @@ export function transform(code: string, id: string, opts: ResolvedOptions) {
if (parsed.isSfc) {
transform_SFC(code, replace, opts);
+ } else if (parsed.isMdx) {
+ transform_MDX(code, replace);
} else {
transform_JSX(code, replace, parsed, opts);
}
diff --git a/src/core/transform_MDX.ts b/src/core/transform_MDX.ts
new file mode 100644
index 0000000..70a7341
--- /dev/null
+++ b/src/core/transform_MDX.ts
@@ -0,0 +1,25 @@
+import { type Position } from '@vue/compiler-dom';
+import { type Processor } from '@mdx-js/mdx/internal-create-format-aware-processors';
+import { createProcessor } from '@mdx-js/mdx';
+import { visit } from 'unist-util-visit';
+
+const mdxJsxRE = /^mdxJsx/;
+
+let processor: Processor;
+export function transform_MDX(code: string, cb: (pos: Position) => void) {
+ processor ||= createProcessor({});
+
+ const ast = processor.parse(code);
+ visit(
+ ast,
+ (node) => mdxJsxRE.test(node.type),
+ (node) => {
+ if ('name' in node && node.name != null) {
+ const { start } = node.position!;
+ const offset = start.offset! + node.name.length + 1;
+
+ cb({ ...start, offset });
+ }
+ },
+ );
+}
diff --git a/test/fixtures.test.ts b/test/fixtures.test.ts
index 07274c8..8715f87 100644
--- a/test/fixtures.test.ts
+++ b/test/fixtures.test.ts
@@ -27,7 +27,12 @@ test.each(fixtures)('transform %s', async (name) => {
expect(
await formatCode(result.code, {
- parser: extname(filename) === '.vue' ? 'vue' : 'babel',
+ parser:
+ extname(filename) === '.vue'
+ ? 'vue'
+ : extname(filename).startsWith('.md')
+ ? 'mdx'
+ : 'babel',
}),
).toBe(output);
diff --git a/test/fixtures/md/input.md b/test/fixtures/md/input.md
new file mode 100644
index 0000000..5788468
--- /dev/null
+++ b/test/fixtures/md/input.md
@@ -0,0 +1,5 @@
+# MD
+
+
diff --git a/test/fixtures/md/options.ts b/test/fixtures/md/options.ts
new file mode 100644
index 0000000..19d8e2b
--- /dev/null
+++ b/test/fixtures/md/options.ts
@@ -0,0 +1,4 @@
+export default {
+ root: process.cwd(),
+ sourceMap: false,
+};
diff --git a/test/fixtures/md/output.md b/test/fixtures/md/output.md
new file mode 100644
index 0000000..8cefa00
--- /dev/null
+++ b/test/fixtures/md/output.md
@@ -0,0 +1,5 @@
+# MD
+
+
diff --git a/test/fixtures/mdx/input.mdx b/test/fixtures/mdx/input.mdx
new file mode 100644
index 0000000..f3c9551
--- /dev/null
+++ b/test/fixtures/mdx/input.mdx
@@ -0,0 +1,7 @@
+import Mdx from 'mdx';
+
+# MDX
+
+
+ test
+
diff --git a/test/fixtures/mdx/options.ts b/test/fixtures/mdx/options.ts
new file mode 100644
index 0000000..19d8e2b
--- /dev/null
+++ b/test/fixtures/mdx/options.ts
@@ -0,0 +1,4 @@
+export default {
+ root: process.cwd(),
+ sourceMap: false,
+};
diff --git a/test/fixtures/mdx/output.mdx b/test/fixtures/mdx/output.mdx
new file mode 100644
index 0000000..e94de47
--- /dev/null
+++ b/test/fixtures/mdx/output.mdx
@@ -0,0 +1,7 @@
+import Mdx from 'mdx';
+
+# MDX
+
+
+ test
+
diff --git a/tsup.config.ts b/tsup.config.ts
index 6f26702..af1d64f 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -14,5 +14,7 @@ export const tsup: Options = {
'@babel/plugin-syntax-jsx',
'@babel/plugin-syntax-typescript',
'@vue/compiler-dom',
+ '@mdx-js/mdx',
+ 'unist-util-visit',
],
};
From 0c92007eefd1827496d9b1b39ad8f4f8e9082fa7 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Wed, 13 Dec 2023 20:04:09 +0800
Subject: [PATCH 11/21] chore: Replace `mdx` ast library (#24)
---
package.json | 6 +-
pnpm-lock.yaml | 362 ++++----------------------------------
src/core/parse_ID.ts | 6 +-
src/core/transform.ts | 15 +-
src/core/transform_MDX.ts | 13 +-
tsup.config.ts | 5 +-
6 files changed, 67 insertions(+), 340 deletions(-)
diff --git a/package.json b/package.json
index fe7686e..24542ae 100644
--- a/package.json
+++ b/package.json
@@ -88,12 +88,14 @@
"@babel/parser": "^7.22.16",
"@babel/plugin-syntax-jsx": "^7.22.5",
"@babel/plugin-syntax-typescript": "^7.22.5",
- "@mdx-js/mdx": "^3.0.0",
"@rollup/pluginutils": "^5.0.5",
"@vue/compiler-dom": "^3.3.4",
"magic-string": "^0.30.3",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "micromark-extension-mdxjs": "^3.0.0",
"unist-util-visit": "^5.0.0",
- "unplugin": "^1.4.0"
+ "unplugin": "^1.5.1"
},
"devDependencies": {
"@types/babel__core": "^7.20.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2399fcb..92bd184 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,9 +20,6 @@ importers:
'@babel/plugin-syntax-typescript':
specifier: ^7.22.5
version: 7.22.5(@babel/core@7.22.17)
- '@mdx-js/mdx':
- specifier: ^3.0.0
- version: 3.0.0
'@rollup/pluginutils':
specifier: ^5.0.5
version: 5.0.5
@@ -32,12 +29,21 @@ importers:
magic-string:
specifier: ^0.30.3
version: 0.30.3
+ mdast-util-from-markdown:
+ specifier: ^2.0.0
+ version: 2.0.0
+ mdast-util-mdx-jsx:
+ specifier: ^3.0.0
+ version: 3.0.0
+ micromark-extension-mdxjs:
+ specifier: ^3.0.0
+ version: 3.0.0
unist-util-visit:
specifier: ^5.0.0
version: 5.0.0
unplugin:
- specifier: ^1.4.0
- version: 1.4.0
+ specifier: ^1.5.1
+ version: 1.5.1
devDependencies:
'@types/babel__core':
specifier: ^7.20.2
@@ -2675,36 +2681,6 @@ packages:
resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
dev: true
- /@mdx-js/mdx@3.0.0:
- resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
- dependencies:
- '@types/estree': 1.0.1
- '@types/estree-jsx': 1.0.3
- '@types/hast': 3.0.3
- '@types/mdx': 2.0.10
- collapse-white-space: 2.1.0
- devlop: 1.1.0
- estree-util-build-jsx: 3.0.1
- estree-util-is-identifier-name: 3.0.0
- estree-util-to-js: 2.0.0
- estree-walker: 3.0.3
- hast-util-to-estree: 3.1.0
- hast-util-to-jsx-runtime: 2.3.0
- markdown-extensions: 2.0.0
- periscopic: 3.1.0
- remark-mdx: 3.0.0
- remark-parse: 11.0.0
- remark-rehype: 11.0.0
- source-map: 0.7.4
- unified: 11.0.4
- unist-util-position-from-estree: 2.0.0
- unist-util-stringify-position: 4.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.1
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/@node-ipc/js-queue@2.0.3:
resolution: {integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==}
engines: {node: '>=1.0.0'}
@@ -3024,10 +3000,6 @@ packages:
'@types/unist': 3.0.2
dev: false
- /@types/mdx@2.0.10:
- resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==}
- dev: false
-
/@types/mime@1.3.2:
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
dev: true
@@ -3117,10 +3089,6 @@ packages:
'@types/node': 20.6.0
dev: true
- /@ungap/structured-clone@1.2.0:
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
- dev: false
-
/@vitejs/plugin-vue@4.2.3(vite@4.4.5)(vue@3.3.4):
resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -3867,12 +3835,12 @@ packages:
acorn: 8.10.0
dev: true
- /acorn-jsx@5.3.2(acorn@8.10.0):
+ /acorn-jsx@5.3.2(acorn@8.11.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
dev: false
/acorn-walk@8.2.0:
@@ -3884,6 +3852,12 @@ packages:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
+ dev: true
+
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
/address@1.2.2:
resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
@@ -4062,11 +4036,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /astring@1.8.6:
- resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==}
- hasBin: true
- dev: false
-
/async-each@1.0.6:
resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==}
dev: true
@@ -4215,10 +4184,6 @@ packages:
esutils: 2.0.3
dev: true
- /bail@2.0.2:
- resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
- dev: false
-
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -4763,10 +4728,6 @@ packages:
engines: {node: '>=0.8'}
dev: true
- /collapse-white-space@2.1.0:
- resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
- dev: false
-
/collection-visit@1.0.0:
resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
engines: {node: '>=0.10.0'}
@@ -4807,10 +4768,6 @@ packages:
engines: {node: '>=0.1.90'}
dev: true
- /comma-separated-tokens@2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
- dev: false
-
/commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
@@ -5723,33 +5680,10 @@ packages:
engines: {node: '>=4.0'}
dev: true
- /estree-util-attach-comments@3.0.0:
- resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
- /estree-util-build-jsx@3.0.1:
- resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- estree-walker: 3.0.3
- dev: false
-
/estree-util-is-identifier-name@3.0.0:
resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
dev: false
- /estree-util-to-js@2.0.0:
- resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- astring: 1.8.6
- source-map: 0.7.4
- dev: false
-
/estree-util-visit@2.0.0:
resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
dependencies:
@@ -5768,12 +5702,6 @@ packages:
/estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
- /estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -5950,10 +5878,6 @@ packages:
is-extendable: 1.0.1
dev: true
- /extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
- dev: false
-
/extglob@2.0.4:
resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
engines: {node: '>=0.10.0'}
@@ -6422,57 +6346,6 @@ packages:
resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
dev: true
- /hast-util-to-estree@3.1.0:
- resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==}
- dependencies:
- '@types/estree': 1.0.1
- '@types/estree-jsx': 1.0.3
- '@types/hast': 3.0.3
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-attach-comments: 3.0.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.0
- mdast-util-mdx-jsx: 3.0.0
- mdast-util-mdxjs-esm: 2.0.1
- property-information: 6.4.0
- space-separated-tokens: 2.0.2
- style-to-object: 0.4.4
- unist-util-position: 5.0.0
- zwitch: 2.0.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /hast-util-to-jsx-runtime@2.3.0:
- resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==}
- dependencies:
- '@types/estree': 1.0.1
- '@types/hast': 3.0.3
- '@types/unist': 3.0.2
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.0
- mdast-util-mdx-jsx: 3.0.0
- mdast-util-mdxjs-esm: 2.0.1
- property-information: 6.4.0
- space-separated-tokens: 2.0.2
- style-to-object: 1.0.5
- unist-util-position: 5.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /hast-util-whitespace@3.0.0:
- resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
- dependencies:
- '@types/hast': 3.0.3
- dev: false
-
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
@@ -6706,14 +6579,6 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
- /inline-style-parser@0.1.1:
- resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
- dev: false
-
- /inline-style-parser@0.2.2:
- resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==}
- dev: false
-
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -6920,11 +6785,6 @@ packages:
engines: {node: '>=10'}
dev: true
- /is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
- dev: false
-
/is-plain-object@2.0.4:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
engines: {node: '>=0.10.0'}
@@ -6943,12 +6803,6 @@ packages:
'@types/estree': 1.0.1
dev: true
- /is-reference@3.0.2:
- resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
/is-stream@1.1.0:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
engines: {node: '>=0.10.0'}
@@ -7368,11 +7222,6 @@ packages:
object-visit: 1.0.1
dev: true
- /markdown-extensions@2.0.0:
- resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
- engines: {node: '>=16'}
- dev: false
-
/mdast-util-from-markdown@2.0.0:
resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
dependencies:
@@ -7392,19 +7241,6 @@ packages:
- supports-color
dev: false
- /mdast-util-mdx-expression@2.0.0:
- resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- '@types/hast': 3.0.3
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/mdast-util-mdx-jsx@3.0.0:
resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==}
dependencies:
@@ -7425,31 +7261,6 @@ packages:
- supports-color
dev: false
- /mdast-util-mdx@3.0.0:
- resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
- dependencies:
- mdast-util-from-markdown: 2.0.0
- mdast-util-mdx-expression: 2.0.0
- mdast-util-mdx-jsx: 3.0.0
- mdast-util-mdxjs-esm: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-mdxjs-esm@2.0.1:
- resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- '@types/hast': 3.0.3
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/mdast-util-phrasing@4.0.0:
resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
dependencies:
@@ -7457,19 +7268,6 @@ packages:
unist-util-is: 6.0.0
dev: false
- /mdast-util-to-hast@13.0.2:
- resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==}
- dependencies:
- '@types/hast': 3.0.3
- '@types/mdast': 4.0.3
- '@ungap/structured-clone': 1.2.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.0
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- dev: false
-
/mdast-util-to-markdown@2.1.0:
resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
dependencies:
@@ -7601,8 +7399,8 @@ packages:
/micromark-extension-mdxjs@3.0.0:
resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
dependencies:
- acorn: 8.10.0
- acorn-jsx: 5.3.2(acorn@8.10.0)
+ acorn: 8.11.2
+ acorn-jsx: 5.3.2(acorn@8.11.2)
micromark-extension-mdx-expression: 3.0.0
micromark-extension-mdx-jsx: 3.0.0
micromark-extension-mdx-md: 2.0.0
@@ -7929,7 +7727,7 @@ packages:
/mlly@1.4.2:
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.3.0
@@ -8477,14 +8275,6 @@ packages:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: true
- /periscopic@3.1.0:
- resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
- dependencies:
- '@types/estree': 1.0.1
- estree-walker: 3.0.3
- is-reference: 3.0.2
- dev: false
-
/picocolors@0.2.1:
resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
dev: true
@@ -9010,10 +8800,6 @@ packages:
sisteransi: 1.0.5
dev: true
- /property-information@6.4.0:
- resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==}
- dev: false
-
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -9197,36 +8983,6 @@ packages:
engines: {node: '>= 0.10'}
dev: true
- /remark-mdx@3.0.0:
- resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==}
- dependencies:
- mdast-util-mdx: 3.0.0
- micromark-extension-mdxjs: 3.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /remark-parse@11.0.0:
- resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-from-markdown: 2.0.0
- micromark-util-types: 2.0.0
- unified: 11.0.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /remark-rehype@11.0.0:
- resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==}
- dependencies:
- '@types/hast': 3.0.3
- '@types/mdast': 4.0.3
- mdast-util-to-hast: 13.0.2
- unified: 11.0.4
- vfile: 6.0.1
- dev: false
-
/remove-trailing-separator@1.1.0:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
dev: true
@@ -9714,11 +9470,6 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- /source-map@0.7.4:
- resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
- engines: {node: '>= 8'}
- dev: false
-
/source-map@0.8.0-beta.0:
resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
engines: {node: '>= 8'}
@@ -9726,10 +9477,6 @@ packages:
whatwg-url: 7.1.0
dev: true
- /space-separated-tokens@2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- dev: false
-
/spdx-correct@3.2.0:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
@@ -9933,18 +9680,6 @@ packages:
resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
dev: true
- /style-to-object@0.4.4:
- resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
- dependencies:
- inline-style-parser: 0.1.1
- dev: false
-
- /style-to-object@1.0.5:
- resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==}
- dependencies:
- inline-style-parser: 0.2.2
- dev: false
-
/stylehacks@5.1.1(postcss@8.4.29):
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -10066,7 +9801,7 @@ packages:
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.5
- acorn: 8.10.0
+ acorn: 8.11.2
commander: 2.20.3
source-map-support: 0.5.21
dev: true
@@ -10185,14 +9920,6 @@ packages:
hasBin: true
dev: true
- /trim-lines@3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
- dev: false
-
- /trough@2.1.0:
- resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
- dev: false
-
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
@@ -10331,18 +10058,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /unified@11.0.4:
- resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
- dependencies:
- '@types/unist': 3.0.2
- bail: 2.0.2
- devlop: 1.1.0
- extend: 3.0.2
- is-plain-obj: 4.1.0
- trough: 2.1.0
- vfile: 6.0.1
- dev: false
-
/union-value@1.0.1:
resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
engines: {node: '>=0.10.0'}
@@ -10365,12 +10080,6 @@ packages:
'@types/unist': 3.0.2
dev: false
- /unist-util-position@5.0.0:
- resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
- dependencies:
- '@types/unist': 3.0.2
- dev: false
-
/unist-util-remove-position@5.0.0:
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
dependencies:
@@ -10451,6 +10160,16 @@ packages:
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
+ dev: true
+
+ /unplugin@1.5.1:
+ resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==}
+ dependencies:
+ acorn: 8.11.2
+ chokidar: 3.5.3
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.6.1
+ dev: false
/unset-value@1.0.0:
resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
@@ -10540,14 +10259,6 @@ packages:
unist-util-stringify-position: 4.0.0
dev: false
- /vfile@6.0.1:
- resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.2
- dev: false
-
/vite-node@0.34.5(@types/node@20.6.0):
resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==}
engines: {node: '>=v14.18.0'}
@@ -10837,7 +10548,7 @@ packages:
hasBin: true
dependencies:
'@discoveryjs/json-ext': 0.5.7
- acorn: 8.10.0
+ acorn: 8.11.2
acorn-walk: 8.2.0
commander: 7.2.0
escape-string-regexp: 4.0.0
@@ -10949,6 +10660,11 @@ packages:
/webpack-virtual-modules@0.5.0:
resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
+ dev: true
+
+ /webpack-virtual-modules@0.6.1:
+ resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==}
+ dev: false
/webpack@5.88.2(esbuild@0.18.20):
resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index 6a0e0dd..e0d3f37 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -1,7 +1,7 @@
import { extname } from 'path';
import { TRACE_ID } from './constants';
-export interface VueQuery extends Record {
+export interface Query extends Record {
type?: 'script' | 'template' | 'style' | 'custom';
raw?: string;
[TRACE_ID]?: string;
@@ -10,7 +10,9 @@ export interface VueQuery extends Record {
export function parse_ID(id: string, root = '') {
const [file, rawQuery] = id.split('?', 2);
const ext = extname(file).slice(1);
- const query = Object.fromEntries(new URLSearchParams(rawQuery)) as VueQuery;
+ const query = (
+ rawQuery ? Object.fromEntries(new URLSearchParams(rawQuery)) : {}
+ ) as Query;
return {
file: file.replace(root, ''),
diff --git a/src/core/transform.ts b/src/core/transform.ts
index f533b58..3eb63a7 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -14,7 +14,7 @@ export function transform(code: string, id: string, opts: ResolvedOptions) {
const { root, sourceMap } = opts;
- const s = new MagicString(code);
+ let s: MagicString;
const parsed = parse_ID(id, root);
if (parsed.isSfc) {
@@ -26,12 +26,17 @@ export function transform(code: string, id: string, opts: ResolvedOptions) {
}
function replace(pos: Position) {
+ s ||= new MagicString(code);
+
const { offset, line, column } = pos;
s.prependLeft(offset, ` ${TRACE_ID}="${parsed.file}:${line}:${column}"`);
}
- return {
- code: s.toString(),
- map: sourceMap ? s.generateMap() : null,
- };
+ // @ts-ignore
+ if (s) {
+ return {
+ code: s.toString(),
+ map: sourceMap ? s.generateMap() : null,
+ };
+ }
}
diff --git a/src/core/transform_MDX.ts b/src/core/transform_MDX.ts
index 70a7341..4180f99 100644
--- a/src/core/transform_MDX.ts
+++ b/src/core/transform_MDX.ts
@@ -1,15 +1,16 @@
import { type Position } from '@vue/compiler-dom';
-import { type Processor } from '@mdx-js/mdx/internal-create-format-aware-processors';
-import { createProcessor } from '@mdx-js/mdx';
+import { fromMarkdown } from 'mdast-util-from-markdown';
+import { mdxJsxFromMarkdown } from 'mdast-util-mdx-jsx';
+import { mdxjs } from 'micromark-extension-mdxjs';
import { visit } from 'unist-util-visit';
const mdxJsxRE = /^mdxJsx/;
-let processor: Processor;
export function transform_MDX(code: string, cb: (pos: Position) => void) {
- processor ||= createProcessor({});
-
- const ast = processor.parse(code);
+ const ast = fromMarkdown(code, 'utf-8', {
+ extensions: [mdxjs()],
+ mdastExtensions: [mdxJsxFromMarkdown()],
+ });
visit(
ast,
(node) => mdxJsxRE.test(node.type),
diff --git a/tsup.config.ts b/tsup.config.ts
index af1d64f..fb1c027 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -6,7 +6,6 @@ export const tsup: Options = {
dts: true,
splitting: true,
clean: true,
- shims: false,
cjsInterop: true,
external: [
'@babel/core',
@@ -14,7 +13,9 @@ export const tsup: Options = {
'@babel/plugin-syntax-jsx',
'@babel/plugin-syntax-typescript',
'@vue/compiler-dom',
- '@mdx-js/mdx',
+ 'mdast-util-from-markdown',
+ 'mdast-util-mdx-jsx',
+ 'micromark-extension-mdxjs',
'unist-util-visit',
],
};
From f00e2c3451ce535a7c69433eabee24b773f70c7d Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 2 Jan 2024 18:17:43 +0800
Subject: [PATCH 12/21] chore: Lower dependency version (#25)
---
global.d.ts | 2 +
package.json | 8 +-
pnpm-lock.yaml | 570 +++++++++-----------------------------
src/core/transform_MDX.ts | 28 +-
4 files changed, 154 insertions(+), 454 deletions(-)
create mode 100644 global.d.ts
diff --git a/global.d.ts b/global.d.ts
new file mode 100644
index 0000000..079f3ff
--- /dev/null
+++ b/global.d.ts
@@ -0,0 +1,2 @@
+declare module 'mdast-util-mdx-jsx';
+declare module 'micromark-extension-mdxjs';
diff --git a/package.json b/package.json
index 24542ae..cb2ae96 100644
--- a/package.json
+++ b/package.json
@@ -91,10 +91,10 @@
"@rollup/pluginutils": "^5.0.5",
"@vue/compiler-dom": "^3.3.4",
"magic-string": "^0.30.3",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "micromark-extension-mdxjs": "^3.0.0",
- "unist-util-visit": "^5.0.0",
+ "mdast-util-from-markdown": "^0.8.5",
+ "mdast-util-mdx-jsx": "^0.1.4",
+ "micromark-extension-mdxjs": "^0.3.0",
+ "unist-util-visit": "^2.0.3",
"unplugin": "^1.5.1"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 92bd184..ca6bb55 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -30,17 +30,17 @@ importers:
specifier: ^0.30.3
version: 0.30.3
mdast-util-from-markdown:
- specifier: ^2.0.0
- version: 2.0.0
+ specifier: ^0.8.5
+ version: 0.8.5
mdast-util-mdx-jsx:
- specifier: ^3.0.0
- version: 3.0.0
+ specifier: ^0.1.4
+ version: 0.1.4
micromark-extension-mdxjs:
- specifier: ^3.0.0
- version: 3.0.0
+ specifier: ^0.3.0
+ version: 0.3.0
unist-util-visit:
- specifier: ^5.0.0
- version: 5.0.0
+ specifier: ^2.0.3
+ version: 2.0.3
unplugin:
specifier: ^1.5.1
version: 1.5.1
@@ -2852,12 +2852,6 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
- /@types/acorn@4.0.6:
- resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
/@types/babel__core@7.20.2:
resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==}
dependencies:
@@ -2923,12 +2917,6 @@ packages:
'@types/node': 20.6.0
dev: true
- /@types/debug@4.1.12:
- resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
- dependencies:
- '@types/ms': 0.7.34
- dev: false
-
/@types/eslint-scope@3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
dependencies:
@@ -2943,12 +2931,6 @@ packages:
'@types/json-schema': 7.0.12
dev: true
- /@types/estree-jsx@1.0.3:
- resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
/@types/estree@1.0.1:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
@@ -2970,12 +2952,6 @@ packages:
'@types/serve-static': 1.15.2
dev: true
- /@types/hast@3.0.3:
- resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==}
- dependencies:
- '@types/unist': 3.0.2
- dev: false
-
/@types/html-minifier-terser@6.1.0:
resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
dev: true
@@ -2994,10 +2970,10 @@ packages:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
- /@types/mdast@4.0.3:
- resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
+ /@types/mdast@3.0.15:
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 2.0.10
dev: false
/@types/mime@1.3.2:
@@ -3012,10 +2988,6 @@ packages:
resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
dev: true
- /@types/ms@0.7.34:
- resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- dev: false
-
/@types/node@20.6.0:
resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
dev: true
@@ -3075,10 +3047,6 @@ packages:
resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
dev: false
- /@types/unist@3.0.2:
- resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
- dev: false
-
/@types/webpack-env@1.18.1:
resolution: {integrity: sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==}
dev: true
@@ -4498,10 +4466,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /ccount@2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- dev: false
-
/chai@4.3.8:
resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==}
engines: {node: '>=4'}
@@ -4579,20 +4543,20 @@ packages:
- supports-color
dev: true
- /character-entities-html4@2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+ /character-entities-html4@1.1.4:
+ resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==}
dev: false
- /character-entities-legacy@3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ /character-entities-legacy@1.1.4:
+ resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
dev: false
- /character-entities@2.0.2:
- resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+ /character-entities@1.2.4:
+ resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
dev: false
- /character-reference-invalid@2.0.1:
- resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+ /character-reference-invalid@1.1.4:
+ resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
dev: false
/check-error@1.0.2:
@@ -5325,12 +5289,6 @@ packages:
dependencies:
ms: 2.1.2
- /decode-named-character-reference@1.0.2:
- resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
- dependencies:
- character-entities: 2.0.2
- dev: false
-
/decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
@@ -5439,11 +5397,6 @@ packages:
engines: {node: '>= 0.8'}
dev: true
- /dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
- dev: false
-
/destr@1.2.2:
resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==}
dev: true
@@ -5461,12 +5414,6 @@ packages:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
dev: true
- /devlop@1.1.0:
- resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- dependencies:
- dequal: 2.0.3
- dev: false
-
/diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5680,15 +5627,8 @@ packages:
engines: {node: '>=4.0'}
dev: true
- /estree-util-is-identifier-name@3.0.0:
- resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
- dev: false
-
- /estree-util-visit@2.0.0:
- resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- '@types/unist': 3.0.2
+ /estree-util-is-identifier-name@1.1.0:
+ resolution: {integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==}
dev: false
/estree-walker@0.2.1:
@@ -6603,15 +6543,15 @@ packages:
kind-of: 6.0.3
dev: true
- /is-alphabetical@2.0.1:
- resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+ /is-alphabetical@1.0.4:
+ resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
dev: false
- /is-alphanumerical@2.0.1:
- resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ /is-alphanumerical@1.0.4:
+ resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
dependencies:
- is-alphabetical: 2.0.1
- is-decimal: 2.0.1
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
dev: false
/is-arrayish@0.2.1:
@@ -6669,8 +6609,8 @@ packages:
kind-of: 6.0.3
dev: true
- /is-decimal@2.0.1:
- resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+ /is-decimal@1.0.4:
+ resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
dev: false
/is-descriptor@0.1.6:
@@ -6748,8 +6688,8 @@ packages:
dependencies:
is-extglob: 2.1.1
- /is-hexadecimal@2.0.1:
- resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+ /is-hexadecimal@1.0.4:
+ resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
dev: false
/is-inside-container@1.0.0:
@@ -7151,8 +7091,8 @@ packages:
wrap-ansi: 3.0.1
dev: true
- /longest-streak@3.1.0:
- resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+ /longest-streak@2.0.4:
+ resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
dev: false
/loupe@2.3.6:
@@ -7222,69 +7162,42 @@ packages:
object-visit: 1.0.1
dev: true
- /mdast-util-from-markdown@2.0.0:
- resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
- dependencies:
- '@types/mdast': 4.0.3
- '@types/unist': 3.0.2
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- mdast-util-to-string: 4.0.0
- micromark: 4.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-decode-string: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-stringify-position: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-mdx-jsx@3.0.0:
- resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==}
- dependencies:
- '@types/estree-jsx': 1.0.3
- '@types/hast': 3.0.3
- '@types/mdast': 4.0.3
- '@types/unist': 3.0.2
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- parse-entities: 4.0.1
- stringify-entities: 4.0.3
- unist-util-remove-position: 5.0.0
- unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.2
+ /mdast-util-from-markdown@0.8.5:
+ resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-string: 2.0.0
+ micromark: 2.11.4
+ parse-entities: 2.0.0
+ unist-util-stringify-position: 2.0.3
transitivePeerDependencies:
- supports-color
dev: false
- /mdast-util-phrasing@4.0.0:
- resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
+ /mdast-util-mdx-jsx@0.1.4:
+ resolution: {integrity: sha512-67KOAvCmypBSpr+AJEAVQg1Obig5Wnguo4ETTxASe5WVP4TLt57bZjDX/9EW5sWYQsO4gPqLxkUOlypVn5rkhg==}
dependencies:
- '@types/mdast': 4.0.3
- unist-util-is: 6.0.0
+ mdast-util-to-markdown: 0.6.5
+ parse-entities: 2.0.0
+ stringify-entities: 3.1.0
+ unist-util-remove-position: 3.0.0
+ unist-util-stringify-position: 2.0.3
+ vfile-message: 2.0.4
dev: false
- /mdast-util-to-markdown@2.1.0:
- resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
- dependencies:
- '@types/mdast': 4.0.3
- '@types/unist': 3.0.2
- longest-streak: 3.1.0
- mdast-util-phrasing: 4.0.0
- mdast-util-to-string: 4.0.0
- micromark-util-decode-string: 2.0.0
- unist-util-visit: 5.0.0
- zwitch: 2.0.4
+ /mdast-util-to-markdown@0.6.5:
+ resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ longest-streak: 2.0.4
+ mdast-util-to-string: 2.0.0
+ parse-entities: 2.0.0
+ repeat-string: 1.6.1
+ zwitch: 1.0.5
dev: false
- /mdast-util-to-string@4.0.0:
- resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
- dependencies:
- '@types/mdast': 4.0.3
+ /mdast-util-to-string@2.0.0:
+ resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
dev: false
/mdn-data@2.0.14:
@@ -7327,264 +7240,59 @@ packages:
engines: {node: '>= 0.6'}
dev: true
- /micromark-core-commonmark@2.0.0:
- resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==}
- dependencies:
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- micromark-factory-destination: 2.0.0
- micromark-factory-label: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-factory-title: 2.0.0
- micromark-factory-whitespace: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-chunked: 2.0.0
- micromark-util-classify-character: 2.0.0
- micromark-util-html-tag-name: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-subtokenize: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-mdx-expression@3.0.0:
- resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==}
+ /micromark-extension-mdx-expression@0.3.2:
+ resolution: {integrity: sha512-Sh8YHLSAlbm/7TZkVKEC4wDcJE8XhVpZ9hUXBue1TcAicrrzs/oXu7PHH3NcyMemjGyMkiVS34Y0AHC5KG3y4A==}
dependencies:
- '@types/estree': 1.0.1
- devlop: 1.1.0
- micromark-factory-mdx-expression: 2.0.1
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ micromark: 2.11.4
+ vfile-message: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /micromark-extension-mdx-jsx@3.0.0:
- resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==}
+ /micromark-extension-mdx-jsx@0.3.3:
+ resolution: {integrity: sha512-kG3VwaJlzAPdtIVDznfDfBfNGMTIzsHqKpTmMlew/iPnUCDRNkX+48ElpaOzXAtK5axtpFKE3Hu3VBriZDnRTQ==}
dependencies:
- '@types/acorn': 4.0.6
- '@types/estree': 1.0.1
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- micromark-factory-mdx-expression: 2.0.1
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- vfile-message: 4.0.2
+ estree-util-is-identifier-name: 1.1.0
+ micromark: 2.11.4
+ micromark-extension-mdx-expression: 0.3.2
+ vfile-message: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /micromark-extension-mdx-md@2.0.0:
- resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
- dependencies:
- micromark-util-types: 2.0.0
+ /micromark-extension-mdx-md@0.1.1:
+ resolution: {integrity: sha512-emlFQEyfx/2aPhwyEqeNDfKE6jPH1cvLTb5ANRo4qZBjaUObnzjLRdzK8RJ4Xc8+/dOmKN8TTRxFnOYF5/EAwQ==}
dev: false
- /micromark-extension-mdxjs-esm@3.0.0:
- resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
+ /micromark-extension-mdxjs-esm@0.3.1:
+ resolution: {integrity: sha512-tuLgcELrgY1a5tPxjk+MrI3BdYtwW67UaHZdzKiDYD8loNbxwIscfdagI6A2BKuAkrfeyHF6FW3B8KuDK3ZMXw==}
dependencies:
- '@types/estree': 1.0.1
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.2
+ micromark: 2.11.4
+ micromark-extension-mdx-expression: 0.3.2
+ vfile-message: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /micromark-extension-mdxjs@3.0.0:
- resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
+ /micromark-extension-mdxjs@0.3.0:
+ resolution: {integrity: sha512-NQuiYA0lw+eFDtSG4+c7ao3RG9dM4P0Kx/sn8OLyPhxtIc6k+9n14k5VfLxRKfAxYRTo8c5PLZPaRNmslGWxJw==}
dependencies:
acorn: 8.11.2
acorn-jsx: 5.3.2(acorn@8.11.2)
- micromark-extension-mdx-expression: 3.0.0
- micromark-extension-mdx-jsx: 3.0.0
- micromark-extension-mdx-md: 2.0.0
- micromark-extension-mdxjs-esm: 3.0.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-destination@2.0.0:
- resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
- dependencies:
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-label@2.0.0:
- resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
- dependencies:
- devlop: 1.1.0
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-mdx-expression@2.0.1:
- resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==}
- dependencies:
- '@types/estree': 1.0.1
- devlop: 1.1.0
- micromark-util-character: 2.0.1
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.2
- dev: false
-
- /micromark-factory-space@2.0.0:
- resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
- dependencies:
- micromark-util-character: 2.0.1
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-title@2.0.0:
- resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
- dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-whitespace@2.0.0:
- resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
- dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-character@2.0.1:
- resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==}
- dependencies:
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-chunked@2.0.0:
- resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-classify-character@2.0.0:
- resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
- dependencies:
- micromark-util-character: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-combine-extensions@2.0.0:
- resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
- dependencies:
- micromark-util-chunked: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-decode-numeric-character-reference@2.0.1:
- resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-decode-string@2.0.0:
- resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
- dependencies:
- decode-named-character-reference: 1.0.2
- micromark-util-character: 2.0.1
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-encode@2.0.0:
- resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
- dev: false
-
- /micromark-util-events-to-acorn@2.0.2:
- resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==}
- dependencies:
- '@types/acorn': 4.0.6
- '@types/estree': 1.0.1
- '@types/unist': 3.0.2
- devlop: 1.1.0
- estree-util-visit: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- vfile-message: 4.0.2
- dev: false
-
- /micromark-util-html-tag-name@2.0.0:
- resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
- dev: false
-
- /micromark-util-normalize-identifier@2.0.0:
- resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-resolve-all@2.0.0:
- resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
- dependencies:
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-sanitize-uri@2.0.0:
- resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
- dependencies:
- micromark-util-character: 2.0.1
- micromark-util-encode: 2.0.0
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-subtokenize@2.0.0:
- resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==}
- dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-symbol@2.0.0:
- resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
- dev: false
-
- /micromark-util-types@2.0.0:
- resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
+ micromark: 2.11.4
+ micromark-extension-mdx-expression: 0.3.2
+ micromark-extension-mdx-jsx: 0.3.3
+ micromark-extension-mdx-md: 0.1.1
+ micromark-extension-mdxjs-esm: 0.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /micromark@4.0.0:
- resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
+ /micromark@2.11.4:
+ resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
dependencies:
- '@types/debug': 4.1.12
debug: 4.3.4
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.0.1
- micromark-util-chunked: 2.0.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-encode: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-subtokenize: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ parse-entities: 2.0.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -8161,17 +7869,15 @@ packages:
callsites: 3.1.0
dev: true
- /parse-entities@4.0.1:
- resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+ /parse-entities@2.0.0:
+ resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
dependencies:
- '@types/unist': 2.0.10
- character-entities: 2.0.2
- character-entities-legacy: 3.0.0
- character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.0.2
- is-alphanumerical: 2.0.1
- is-decimal: 2.0.1
- is-hexadecimal: 2.0.1
+ character-entities: 1.2.4
+ character-entities-legacy: 1.1.4
+ character-reference-invalid: 1.1.4
+ is-alphanumerical: 1.0.4
+ is-decimal: 1.0.4
+ is-hexadecimal: 1.0.4
dev: false
/parse-json@5.2.0:
@@ -9005,7 +8711,6 @@ packages:
/repeat-string@1.6.1:
resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
engines: {node: '>=0.10'}
- dev: true
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
@@ -9629,11 +9334,12 @@ packages:
safe-buffer: 5.2.1
dev: true
- /stringify-entities@4.0.3:
- resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
+ /stringify-entities@3.1.0:
+ resolution: {integrity: sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==}
dependencies:
- character-entities-html4: 2.1.0
- character-entities-legacy: 3.0.0
+ character-entities-html4: 1.1.4
+ character-entities-legacy: 1.1.4
+ xtend: 4.0.2
dev: false
/strip-ansi@4.0.0:
@@ -10068,44 +9774,35 @@ packages:
set-value: 2.0.1
dev: true
- /unist-util-is@6.0.0:
- resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
- dependencies:
- '@types/unist': 3.0.2
- dev: false
-
- /unist-util-position-from-estree@2.0.0:
- resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
- dependencies:
- '@types/unist': 3.0.2
+ /unist-util-is@4.1.0:
+ resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
dev: false
- /unist-util-remove-position@5.0.0:
- resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
+ /unist-util-remove-position@3.0.0:
+ resolution: {integrity: sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==}
dependencies:
- '@types/unist': 3.0.2
- unist-util-visit: 5.0.0
+ unist-util-visit: 2.0.3
dev: false
- /unist-util-stringify-position@4.0.0:
- resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+ /unist-util-stringify-position@2.0.3:
+ resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 2.0.10
dev: false
- /unist-util-visit-parents@6.0.1:
- resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+ /unist-util-visit-parents@3.1.1:
+ resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
dependencies:
- '@types/unist': 3.0.2
- unist-util-is: 6.0.0
+ '@types/unist': 2.0.10
+ unist-util-is: 4.1.0
dev: false
- /unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ /unist-util-visit@2.0.3:
+ resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
dependencies:
- '@types/unist': 3.0.2
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
+ '@types/unist': 2.0.10
+ unist-util-is: 4.1.0
+ unist-util-visit-parents: 3.1.1
dev: false
/universalify@2.0.0:
@@ -10252,11 +9949,11 @@ packages:
engines: {node: '>= 0.8'}
dev: true
- /vfile-message@4.0.2:
- resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
+ /vfile-message@2.0.4:
+ resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
dependencies:
- '@types/unist': 3.0.2
- unist-util-stringify-position: 4.0.0
+ '@types/unist': 2.0.10
+ unist-util-stringify-position: 2.0.3
dev: false
/vite-node@0.34.5(@types/node@20.6.0):
@@ -10814,6 +10511,11 @@ packages:
optional: true
dev: true
+ /xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+ dev: false
+
/y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
@@ -10874,6 +10576,6 @@ packages:
strip-indent: 2.0.0
dev: true
- /zwitch@2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+ /zwitch@1.0.5:
+ resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
dev: false
diff --git a/src/core/transform_MDX.ts b/src/core/transform_MDX.ts
index 4180f99..31e706d 100644
--- a/src/core/transform_MDX.ts
+++ b/src/core/transform_MDX.ts
@@ -1,26 +1,22 @@
import { type Position } from '@vue/compiler-dom';
-import { fromMarkdown } from 'mdast-util-from-markdown';
-import { mdxJsxFromMarkdown } from 'mdast-util-mdx-jsx';
-import { mdxjs } from 'micromark-extension-mdxjs';
-import { visit } from 'unist-util-visit';
+import fromMarkdown from 'mdast-util-from-markdown';
+import { fromMarkdown as mdxJsxFromMarkdown } from 'mdast-util-mdx-jsx';
+import mdxjs from 'micromark-extension-mdxjs';
+import visit from 'unist-util-visit';
const mdxJsxRE = /^mdxJsx/;
export function transform_MDX(code: string, cb: (pos: Position) => void) {
const ast = fromMarkdown(code, 'utf-8', {
extensions: [mdxjs()],
- mdastExtensions: [mdxJsxFromMarkdown()],
+ mdastExtensions: [mdxJsxFromMarkdown],
});
- visit(
- ast,
- (node) => mdxJsxRE.test(node.type),
- (node) => {
- if ('name' in node && node.name != null) {
- const { start } = node.position!;
- const offset = start.offset! + node.name.length + 1;
+ visit(ast, (node) => {
+ if (mdxJsxRE.test(node.type) && 'name' in node && node.name != null) {
+ const { start } = node.position!;
+ const offset = start.offset! + (node.name as any).length + 1;
- cb({ ...start, offset });
- }
- },
- );
+ cb({ ...start, offset });
+ }
+ });
}
From 11795bc5ab872ec59273c3f22632ab213b2a6e73 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 2 Jan 2024 20:17:08 +0800
Subject: [PATCH 13/21] chore: release v0.0.4 (#26)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index cb2ae96..1b9d992 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.3",
+ "version": "0.0.4",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
From 923d82f2f18a8076d79cb6b043755b1a26743dab Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Thu, 6 Jun 2024 20:33:52 +0800
Subject: [PATCH 14/21] fix: `sfc` error (#27)
---
README.md | 16 +++++++++-------
src/core/index.ts | 4 ++--
src/core/transform.ts | 8 ++++----
src/core/transform_JSX.ts | 4 ++--
src/types.ts | 14 ++++++++------
test/fixtures/vue-skip/input.vue | 3 ---
test/fixtures/vue-skip/options.ts | 4 ----
test/fixtures/vue-skip/output.vue | 3 ---
8 files changed, 25 insertions(+), 31 deletions(-)
delete mode 100644 test/fixtures/vue-skip/input.vue
delete mode 100644 test/fixtures/vue-skip/options.ts
delete mode 100644 test/fixtures/vue-skip/output.vue
diff --git a/README.md b/README.md
index 6fe6fc9..360d70f 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ Add a \_\_source prop to all Elements.
- 🌈 Supports `Vue2` and `Vue3`.
- 🪐 Support add to ``.
-- ✨ JSX support in `.vue`, `.jsx`, `.tsx`.
+- ✨ JSX support in `.vue`, `.jsx`, `.tsx`, `.mdx`.
- 😃 Supports `Vite`, `Webpack`, `Rspack`, `Vue CLI`, `Rollup`, `esbuild`.
> For development only
@@ -213,11 +213,6 @@ The following show the default values of the configuration
```ts
export interface Options {
- /** @default '**\/*.{vue,jsx,tsx}' */
- include?: string | RegExp | (string | RegExp)[];
- /** @default 'node_modules/**' */
- exclude?: string | RegExp | (string | RegExp)[];
-
/**
* source root path
*
@@ -230,13 +225,20 @@ export interface Options {
* @default false
*/
sourceMap?: boolean;
-
/**
* Array containing the plugins that you want to enable.
*
* @default ['jsx', 'typescript']
*/
babelParserPlugins?: ParserPlugin[];
+ /**
+ * @default '\/**\/*.{vue,jsx,tsx}'
+ */
+ include?: string | RegExp | (string | RegExp)[];
+ /**
+ * @default '\/node_modules\/**\/*'
+ */
+ exclude?: string | RegExp | (string | RegExp)[];
}
```
diff --git a/src/core/index.ts b/src/core/index.ts
index 648a0fc..1018a4c 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -31,11 +31,11 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
function resolveOptions(opts: Options): ResolvedOptions {
return {
- include: opts.include ?? '**/*.{vue,jsx,tsx}',
- exclude: opts.exclude ?? 'node_modules/**',
root: opts.root ?? process.cwd(),
sourceMap: opts.sourceMap ?? false,
babelParserPlugins: opts.babelParserPlugins ?? [],
+ include: opts.include ?? '/**/*.{vue,jsx,tsx}',
+ exclude: opts.exclude ?? '/node_modules/**/*',
};
}
diff --git a/src/core/transform.ts b/src/core/transform.ts
index 3eb63a7..3b1359b 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -7,16 +7,16 @@ import { transform_SFC } from './transform_SFC';
import { transform_MDX } from './transform_MDX';
import { transform_JSX } from './transform_JSX';
-const skipRE = new RegExp(` ${TRACE_ID}=['"].+:[0-9]+:[0-9]+['"]`);
-
export function transform(code: string, id: string, opts: ResolvedOptions) {
- if (skipRE.test(code)) return;
-
const { root, sourceMap } = opts;
let s: MagicString;
const parsed = parse_ID(id, root);
+ if (parsed.query[TRACE_ID]) {
+ return;
+ }
+
if (parsed.isSfc) {
transform_SFC(code, replace, opts);
} else if (parsed.isMdx) {
diff --git a/src/core/transform_JSX.ts b/src/core/transform_JSX.ts
index 0c66c47..04a8169 100644
--- a/src/core/transform_JSX.ts
+++ b/src/core/transform_JSX.ts
@@ -1,6 +1,6 @@
import { type Position } from '@vue/compiler-dom';
import { traverse, types as t } from '@babel/core';
-import { parse, ParserPlugin } from '@babel/parser';
+import { parse } from '@babel/parser';
import { type ResolvedOptions } from '../types';
export function transform_JSX(
@@ -24,7 +24,7 @@ export function transform_JSX(
const ast = parse(code, {
sourceType: 'unambiguous',
- plugins: [...pluginSet] as ParserPlugin[],
+ plugins: Array.from(pluginSet),
startLine,
// babel start at 0
startColumn: startColumn - 1,
diff --git a/src/types.ts b/src/types.ts
index 9bc3dda..fa7b55c 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,11 +1,6 @@
import { ParserPlugin } from '@babel/parser';
export interface Options {
- /** @default '**\/*.{vue,jsx,tsx}' */
- include?: string | RegExp | (string | RegExp)[];
- /** @default 'node_modules/**' */
- exclude?: string | RegExp | (string | RegExp)[];
-
/**
* source root path
*
@@ -18,13 +13,20 @@ export interface Options {
* @default false
*/
sourceMap?: boolean;
-
/**
* Array containing the plugins that you want to enable.
*
* @default ['jsx', 'typescript']
*/
babelParserPlugins?: ParserPlugin[];
+ /**
+ * @default '\/**\/*.{vue,jsx,tsx}'
+ */
+ include?: string | RegExp | (string | RegExp)[];
+ /**
+ * @default '\/node_modules\/**\/*'
+ */
+ exclude?: string | RegExp | (string | RegExp)[];
}
export type ResolvedOptions = Required;
diff --git a/test/fixtures/vue-skip/input.vue b/test/fixtures/vue-skip/input.vue
deleted file mode 100644
index a1364ce..0000000
--- a/test/fixtures/vue-skip/input.vue
+++ /dev/null
@@ -1,3 +0,0 @@
-
- test
-
diff --git a/test/fixtures/vue-skip/options.ts b/test/fixtures/vue-skip/options.ts
deleted file mode 100644
index 19d8e2b..0000000
--- a/test/fixtures/vue-skip/options.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export default {
- root: process.cwd(),
- sourceMap: false,
-};
diff --git a/test/fixtures/vue-skip/output.vue b/test/fixtures/vue-skip/output.vue
deleted file mode 100644
index a1364ce..0000000
--- a/test/fixtures/vue-skip/output.vue
+++ /dev/null
@@ -1,3 +0,0 @@
-
- test
-
From 08c0f4593a25c90982db6a601df6edb677ed96f6 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Thu, 6 Jun 2024 21:02:14 +0800
Subject: [PATCH 15/21] fix: Uncompiled `SFC` under `webpack` (#28)
---
src/core/index.ts | 8 ++++++--
src/core/transform.ts | 9 +++++++--
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/core/index.ts b/src/core/index.ts
index 1018a4c..f32acac 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -5,7 +5,10 @@ import { isDev } from './isDev';
import { parse_ID } from './parse_ID';
import { transform } from './transform';
-export const unpluginFactory: UnpluginFactory = (options = {}) => {
+export const unpluginFactory: UnpluginFactory = (
+ options = {},
+ meta,
+) => {
if (!isDev()) {
return {
name: 'unplugin-vue-source',
@@ -14,6 +17,7 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
const opts = resolveOptions(options);
const filter = createFilter(opts.include, opts.exclude);
+ const isWebpack = meta.framework === 'webpack';
return {
name: 'unplugin-vue-source',
@@ -24,7 +28,7 @@ export const unpluginFactory: UnpluginFactory = (options = {}) => {
return query.raw == null && filter(file);
},
transform(code, id) {
- return transform(code, id, opts);
+ return transform(code, id, opts, isWebpack);
},
};
};
diff --git a/src/core/transform.ts b/src/core/transform.ts
index 3b1359b..a2695e2 100644
--- a/src/core/transform.ts
+++ b/src/core/transform.ts
@@ -7,13 +7,18 @@ import { transform_SFC } from './transform_SFC';
import { transform_MDX } from './transform_MDX';
import { transform_JSX } from './transform_JSX';
-export function transform(code: string, id: string, opts: ResolvedOptions) {
+export function transform(
+ code: string,
+ id: string,
+ opts: ResolvedOptions,
+ isWebpack = false,
+) {
const { root, sourceMap } = opts;
let s: MagicString;
const parsed = parse_ID(id, root);
- if (parsed.query[TRACE_ID]) {
+ if (!isWebpack && parsed.query[TRACE_ID]) {
return;
}
From c00a0cc40f49f8c23b5330b6ad3cf14973503fb2 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Mon, 10 Jun 2024 13:03:03 +0800
Subject: [PATCH 16/21] chore: Modify default values for options (#29)
---
README.md | 4 ++--
src/core/index.ts | 4 ++--
src/core/transform_SFC.ts | 4 ++--
src/types.ts | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 360d70f..b13954d 100644
--- a/README.md
+++ b/README.md
@@ -232,11 +232,11 @@ export interface Options {
*/
babelParserPlugins?: ParserPlugin[];
/**
- * @default '\/**\/*.{vue,jsx,tsx}'
+ * @default /\.(vue|jsx|tsx|mdx)$/
*/
include?: string | RegExp | (string | RegExp)[];
/**
- * @default '\/node_modules\/**\/*'
+ * @default /\/node_modules\//
*/
exclude?: string | RegExp | (string | RegExp)[];
}
diff --git a/src/core/index.ts b/src/core/index.ts
index f32acac..90d20be 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -38,8 +38,8 @@ function resolveOptions(opts: Options): ResolvedOptions {
root: opts.root ?? process.cwd(),
sourceMap: opts.sourceMap ?? false,
babelParserPlugins: opts.babelParserPlugins ?? [],
- include: opts.include ?? '/**/*.{vue,jsx,tsx}',
- exclude: opts.exclude ?? '/node_modules/**/*',
+ include: opts.include ?? /\.(vue|jsx|tsx|mdx)$/,
+ exclude: opts.exclude ?? /\/node_modules\//,
};
}
diff --git a/src/core/transform_SFC.ts b/src/core/transform_SFC.ts
index 5e2b6ae..e8308c7 100644
--- a/src/core/transform_SFC.ts
+++ b/src/core/transform_SFC.ts
@@ -33,13 +33,13 @@ export function transform_SFC(
],
});
- const jsxOpts = resolveJsxOptsByScript(ast);
+ const jsxOpts = resolveJsxOptsForScript(ast);
if (jsxOpts) {
transform_JSX(jsxOpts.code, cb, jsxOpts, opts);
}
}
-function resolveJsxOptsByScript(ast: RootNode) {
+function resolveJsxOptsForScript(ast: RootNode) {
const scriptNode = (ast.children as ElementNode[]).find(
(node) => node.tag === 'script',
);
diff --git a/src/types.ts b/src/types.ts
index fa7b55c..23b7e48 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -20,11 +20,11 @@ export interface Options {
*/
babelParserPlugins?: ParserPlugin[];
/**
- * @default '\/**\/*.{vue,jsx,tsx}'
+ * @default /\.(vue|jsx|tsx|mdx)$/
*/
include?: string | RegExp | (string | RegExp)[];
/**
- * @default '\/node_modules\/**\/*'
+ * @default /\/node_modules\//
*/
exclude?: string | RegExp | (string | RegExp)[];
}
From 6ab47eded51d69937c2ef70b950ff12d67b52f42 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Mon, 10 Jun 2024 13:31:12 +0800
Subject: [PATCH 17/21] chore: release v0.0.5 (#30)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1b9d992..69c97db 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.4",
+ "version": "0.0.5",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
From 217cf07cbdc264c6a1ca0e68c68a4e43a3e4c237 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 16 Jul 2024 20:14:26 +0800
Subject: [PATCH 18/21] fix: Remove the slash before the relative path (#31)
---
src/core/parse_ID.ts | 5 ++++-
test/fixtures/jsx/output.tsx | 2 +-
test/fixtures/md/output.md | 4 ++--
test/fixtures/mdx/output.mdx | 4 ++--
test/fixtures/root/output.vue | 4 ++--
test/fixtures/source-map/output.vue | 4 ++--
test/fixtures/source-map/source-map.json | 2 +-
test/fixtures/vue-setup-jsx/output.vue | 8 ++++----
test/fixtures/vue-with-jsx/output.vue | 6 ++----
test/fixtures/vue/output.vue | 4 ++--
10 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/src/core/parse_ID.ts b/src/core/parse_ID.ts
index e0d3f37..1dc5d55 100644
--- a/src/core/parse_ID.ts
+++ b/src/core/parse_ID.ts
@@ -9,13 +9,16 @@ export interface Query extends Record {
export function parse_ID(id: string, root = '') {
const [file, rawQuery] = id.split('?', 2);
+ const filename = file.startsWith(root)
+ ? file.replace(root, '').replace(/^\//, '')
+ : file;
const ext = extname(file).slice(1);
const query = (
rawQuery ? Object.fromEntries(new URLSearchParams(rawQuery)) : {}
) as Query;
return {
- file: file.replace(root, ''),
+ file: filename,
isSfc: ext === 'vue',
isTsx: ext.startsWith('ts'),
isMdx: ext.startsWith('md'),
diff --git a/test/fixtures/jsx/output.tsx b/test/fixtures/jsx/output.tsx
index 7a787eb..d84e9f4 100644
--- a/test/fixtures/jsx/output.tsx
+++ b/test/fixtures/jsx/output.tsx
@@ -1,3 +1,3 @@
export default () => {
- return test
;
+ return test
;
};
diff --git a/test/fixtures/md/output.md b/test/fixtures/md/output.md
index 8cefa00..4e5b773 100644
--- a/test/fixtures/md/output.md
+++ b/test/fixtures/md/output.md
@@ -1,5 +1,5 @@
# MD
-
-
test
+
diff --git a/test/fixtures/mdx/output.mdx b/test/fixtures/mdx/output.mdx
index e94de47..3b126a0 100644
--- a/test/fixtures/mdx/output.mdx
+++ b/test/fixtures/mdx/output.mdx
@@ -2,6 +2,6 @@ import Mdx from 'mdx';
# MDX
-
- test
+
+ test
diff --git a/test/fixtures/root/output.vue b/test/fixtures/root/output.vue
index 8ae6455..d3f66fd 100644
--- a/test/fixtures/root/output.vue
+++ b/test/fixtures/root/output.vue
@@ -1,3 +1,3 @@
-
- test
+
+ test
diff --git a/test/fixtures/source-map/output.vue b/test/fixtures/source-map/output.vue
index 22c929c..bff05bd 100644
--- a/test/fixtures/source-map/output.vue
+++ b/test/fixtures/source-map/output.vue
@@ -1,3 +1,3 @@
-
- test
+
+ test
diff --git a/test/fixtures/source-map/source-map.json b/test/fixtures/source-map/source-map.json
index 5d4a5a7..5ffc3de 100644
--- a/test/fixtures/source-map/source-map.json
+++ b/test/fixtures/source-map/source-map.json
@@ -2,5 +2,5 @@
"version": 3,
"sources": [""],
"names": [],
- "mappings": "AAAA,4DAAS;AACT,yDAAM;AACN;"
+ "mappings": "AAAA,2DAAS;AACT,wDAAM;AACN;"
}
diff --git a/test/fixtures/vue-setup-jsx/output.vue b/test/fixtures/vue-setup-jsx/output.vue
index 8c5f40b..e3258a5 100644
--- a/test/fixtures/vue-setup-jsx/output.vue
+++ b/test/fixtures/vue-setup-jsx/output.vue
@@ -1,8 +1,8 @@
-
-
- {{ node }}
+
+ {{ node }}
diff --git a/test/fixtures/vue-with-jsx/output.vue b/test/fixtures/vue-with-jsx/output.vue
index b551f25..ddcda8b 100644
--- a/test/fixtures/vue-with-jsx/output.vue
+++ b/test/fixtures/vue-with-jsx/output.vue
@@ -1,9 +1,7 @@
-
diff --git a/test/fixtures/vue/output.vue b/test/fixtures/vue/output.vue
index a1364ce..24ea48f 100644
--- a/test/fixtures/vue/output.vue
+++ b/test/fixtures/vue/output.vue
@@ -1,3 +1,3 @@
-
- test
+
+ test
From 0548cb3c04fd006b0b91671471a8eaa5ca8a9453 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Tue, 16 Jul 2024 21:03:01 +0800
Subject: [PATCH 19/21] chore: release v0.0.6 (#32)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 69c97db..1d96920 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.5",
+ "version": "0.0.6",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",
From 313d683ecdf420f35dc7e57145b7ec2347559844 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Wed, 17 Jul 2024 22:50:16 +0800
Subject: [PATCH 20/21] fix: Normalize paths in Windows (#33)
---
src/core/index.ts | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/core/index.ts b/src/core/index.ts
index 90d20be..eadea89 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -24,18 +24,18 @@ export const unpluginFactory: UnpluginFactory = (
enforce: 'pre',
transformInclude(id) {
- const { file, query } = parse_ID(id);
+ const { file, query } = parse_ID(normalizePath(id));
return query.raw == null && filter(file);
},
transform(code, id) {
- return transform(code, id, opts, isWebpack);
+ return transform(code, normalizePath(id), opts, isWebpack);
},
};
};
function resolveOptions(opts: Options): ResolvedOptions {
return {
- root: opts.root ?? process.cwd(),
+ root: normalizePath(opts.root ?? process.cwd()),
sourceMap: opts.sourceMap ?? false,
babelParserPlugins: opts.babelParserPlugins ?? [],
include: opts.include ?? /\.(vue|jsx|tsx|mdx)$/,
@@ -43,4 +43,8 @@ function resolveOptions(opts: Options): ResolvedOptions {
};
}
+function normalizePath(path: string) {
+ return path.replace(/\\/g, '/');
+}
+
export default /* #__PURE__ */ createUnplugin(unpluginFactory);
From 76b8f51837f229e27ab472fd972db15f9077d729 Mon Sep 17 00:00:00 2001
From: zjxxxxxxxxx <43126836+zjxxxxxxxxx@users.noreply.github.com>
Date: Wed, 17 Jul 2024 23:10:03 +0800
Subject: [PATCH 21/21] chore: release v0.0.7 (#34)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1d96920..7631b9b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "unplugin-vue-source",
- "version": "0.0.6",
+ "version": "0.0.7",
"packageManager": "pnpm@8.6.8",
"description": "Add a __source prop to all Elements",
"author": "zjxxxxxxxxx <954270063@qq.com>",