@vue-jsx-vapor/macros 2.3.3 → 2.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.cjs +1 -1
- package/dist/api.d.cts +9 -6
- package/dist/api.d.ts +9 -6
- package/dist/api.js +1 -1
- package/dist/astro.cjs +4 -4
- package/dist/astro.d.cts +1 -1
- package/dist/astro.d.ts +1 -1
- package/dist/astro.js +4 -4
- package/dist/{core-CdPKEM79.cjs → core-C740HxiF.cjs} +36 -23
- package/dist/{core-B_EM_kTA.js → core-CHBxRAvb.js} +36 -23
- package/dist/esbuild.cjs +4 -4
- package/dist/esbuild.d.cts +1 -1
- package/dist/esbuild.d.ts +1 -1
- package/dist/esbuild.js +4 -4
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/nuxt.cjs +6 -6
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/nuxt.js +6 -6
- package/dist/{options-CNIhAQHD.cjs → options-BSX_vMxh.cjs} +8 -5
- package/dist/options-BWRkHmm5.js +23 -0
- package/dist/options.cjs +1 -1
- package/dist/options.d-CXMsJZSo.d.cts +37 -0
- package/dist/options.d-DNWXuL_g.d.ts +37 -0
- package/dist/options.d.cts +1 -1
- package/dist/options.d.ts +1 -1
- package/dist/options.js +1 -1
- package/dist/{raw-oJpqvj1N.cjs → raw-BXpT71mV.cjs} +2 -2
- package/dist/{raw-9H5vTeLe.js → raw-Hr7QYA0U.js} +2 -2
- package/dist/raw.cjs +3 -3
- package/dist/raw.d.cts +1 -1
- package/dist/raw.d.ts +1 -1
- package/dist/raw.js +3 -3
- package/dist/rolldown.cjs +4 -4
- package/dist/rolldown.d.cts +1 -1
- package/dist/rolldown.d.ts +1 -1
- package/dist/rolldown.js +4 -4
- package/dist/rollup.cjs +4 -4
- package/dist/rollup.d.cts +1 -1
- package/dist/rollup.d.ts +1 -1
- package/dist/rollup.js +4 -4
- package/dist/rspack.cjs +4 -4
- package/dist/rspack.d.cts +1 -1
- package/dist/rspack.d.ts +1 -1
- package/dist/rspack.js +4 -4
- package/dist/{src-CY9FOMwg.cjs → src-2EUAmvRo.cjs} +1 -1
- package/dist/{src-CjDaDFw_.js → src-BDMVJUXS.js} +1 -1
- package/dist/{vite-HbXTfQl_.js → vite-CS2vynmi.js} +1 -1
- package/dist/{vite-CtRiheet.cjs → vite-DP98E6od.cjs} +1 -1
- package/dist/vite.cjs +5 -5
- package/dist/vite.d.cts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.js +5 -5
- package/dist/volar.cjs +70 -57
- package/dist/volar.d.cts +1 -1
- package/dist/volar.d.ts +1 -1
- package/dist/volar.js +70 -57
- package/dist/{webpack-5inEmXrh.js → webpack-C78RZrII.js} +1 -1
- package/dist/{webpack-YO7qm0E9.cjs → webpack-qmJC3FBB.cjs} +1 -1
- package/dist/webpack.cjs +5 -5
- package/dist/webpack.d.cts +1 -1
- package/dist/webpack.d.ts +1 -1
- package/dist/webpack.js +5 -5
- package/package.json +1 -2
- package/dist/options-pbSvpKdV.js +0 -20
- package/dist/options.d-B3WOiT_L.d.cts +0 -26
- package/dist/options.d-DtyRfe-9.d.ts +0 -26
package/dist/options.d.cts
CHANGED
package/dist/options.d.ts
CHANGED
package/dist/options.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const require_chunk = require('./chunk-BCwAaXi7.cjs');
|
|
3
|
-
const require_core = require('./core-
|
|
4
|
-
const require_options = require('./options-
|
|
3
|
+
const require_core = require('./core-C740HxiF.cjs');
|
|
4
|
+
const require_options = require('./options-BSX_vMxh.cjs');
|
|
5
5
|
const __vue_macros_common = require_chunk.__toESM(require("@vue-macros/common"));
|
|
6
6
|
const __vue_compiler_sfc = require_chunk.__toESM(require("@vue/compiler-sfc"));
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { helperPrefix, transformJsxMacros, useModelHelperId, use_model_default, withDefaultsHelperId, with_defaults_default } from "./core-
|
|
2
|
-
import { resolveOptions } from "./options-
|
|
1
|
+
import { helperPrefix, transformJsxMacros, useModelHelperId, use_model_default, withDefaultsHelperId, with_defaults_default } from "./core-CHBxRAvb.js";
|
|
2
|
+
import { resolveOptions } from "./options-BWRkHmm5.js";
|
|
3
3
|
import { createFilter, normalizePath } from "@vue-macros/common";
|
|
4
4
|
import { compileStyleAsync } from "@vue/compiler-sfc";
|
|
5
5
|
|
package/dist/raw.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
-
require('./core-
|
|
3
|
-
const require_raw = require('./raw-
|
|
4
|
-
require('./options-
|
|
2
|
+
require('./core-C740HxiF.cjs');
|
|
3
|
+
const require_raw = require('./raw-BXpT71mV.cjs');
|
|
4
|
+
require('./options-BSX_vMxh.cjs');
|
|
5
5
|
|
|
6
6
|
exports.default = require_raw.raw_default
|
package/dist/raw.d.cts
CHANGED
package/dist/raw.d.ts
CHANGED
package/dist/raw.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./core-
|
|
2
|
-
import { raw_default } from "./raw-
|
|
3
|
-
import "./options-
|
|
1
|
+
import "./core-CHBxRAvb.js";
|
|
2
|
+
import { raw_default } from "./raw-Hr7QYA0U.js";
|
|
3
|
+
import "./options-BWRkHmm5.js";
|
|
4
4
|
|
|
5
5
|
export { raw_default as default };
|
package/dist/rolldown.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
-
require('./core-
|
|
4
|
-
require('./raw-
|
|
5
|
-
require('./options-
|
|
6
|
-
const require_src = require('./src-
|
|
3
|
+
require('./core-C740HxiF.cjs');
|
|
4
|
+
require('./raw-BXpT71mV.cjs');
|
|
5
|
+
require('./options-BSX_vMxh.cjs');
|
|
6
|
+
const require_src = require('./src-2EUAmvRo.cjs');
|
|
7
7
|
|
|
8
8
|
//#region src/rolldown.ts
|
|
9
9
|
var rolldown_default = require_src.src_default.rolldown;
|
package/dist/rolldown.d.cts
CHANGED
package/dist/rolldown.d.ts
CHANGED
package/dist/rolldown.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./core-
|
|
2
|
-
import "./raw-
|
|
3
|
-
import "./options-
|
|
4
|
-
import { src_default } from "./src-
|
|
1
|
+
import "./core-CHBxRAvb.js";
|
|
2
|
+
import "./raw-Hr7QYA0U.js";
|
|
3
|
+
import "./options-BWRkHmm5.js";
|
|
4
|
+
import { src_default } from "./src-BDMVJUXS.js";
|
|
5
5
|
|
|
6
6
|
//#region src/rolldown.ts
|
|
7
7
|
var rolldown_default = src_default.rolldown;
|
package/dist/rollup.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
-
require('./core-
|
|
4
|
-
require('./raw-
|
|
5
|
-
require('./options-
|
|
6
|
-
const require_src = require('./src-
|
|
3
|
+
require('./core-C740HxiF.cjs');
|
|
4
|
+
require('./raw-BXpT71mV.cjs');
|
|
5
|
+
require('./options-BSX_vMxh.cjs');
|
|
6
|
+
const require_src = require('./src-2EUAmvRo.cjs');
|
|
7
7
|
|
|
8
8
|
//#region src/rollup.ts
|
|
9
9
|
var rollup_default = require_src.src_default.rollup;
|
package/dist/rollup.d.cts
CHANGED
package/dist/rollup.d.ts
CHANGED
package/dist/rollup.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./core-
|
|
2
|
-
import "./raw-
|
|
3
|
-
import "./options-
|
|
4
|
-
import { src_default } from "./src-
|
|
1
|
+
import "./core-CHBxRAvb.js";
|
|
2
|
+
import "./raw-Hr7QYA0U.js";
|
|
3
|
+
import "./options-BWRkHmm5.js";
|
|
4
|
+
import { src_default } from "./src-BDMVJUXS.js";
|
|
5
5
|
|
|
6
6
|
//#region src/rollup.ts
|
|
7
7
|
var rollup_default = src_default.rollup;
|
package/dist/rspack.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
-
require('./core-
|
|
4
|
-
require('./raw-
|
|
5
|
-
require('./options-
|
|
6
|
-
const require_src = require('./src-
|
|
3
|
+
require('./core-C740HxiF.cjs');
|
|
4
|
+
require('./raw-BXpT71mV.cjs');
|
|
5
|
+
require('./options-BSX_vMxh.cjs');
|
|
6
|
+
const require_src = require('./src-2EUAmvRo.cjs');
|
|
7
7
|
|
|
8
8
|
//#region src/rspack.ts
|
|
9
9
|
var rspack_default = require_src.src_default.rspack;
|
package/dist/rspack.d.cts
CHANGED
package/dist/rspack.d.ts
CHANGED
package/dist/rspack.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./core-
|
|
2
|
-
import "./raw-
|
|
3
|
-
import "./options-
|
|
4
|
-
import { src_default } from "./src-
|
|
1
|
+
import "./core-CHBxRAvb.js";
|
|
2
|
+
import "./raw-Hr7QYA0U.js";
|
|
3
|
+
import "./options-BWRkHmm5.js";
|
|
4
|
+
import { src_default } from "./src-BDMVJUXS.js";
|
|
5
5
|
|
|
6
6
|
//#region src/rspack.ts
|
|
7
7
|
var rspack_default = src_default.rspack;
|
package/dist/vite.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
-
require('./core-
|
|
3
|
-
require('./raw-
|
|
4
|
-
require('./options-
|
|
5
|
-
require('./src-
|
|
6
|
-
const require_vite = require('./vite-
|
|
2
|
+
require('./core-C740HxiF.cjs');
|
|
3
|
+
require('./raw-BXpT71mV.cjs');
|
|
4
|
+
require('./options-BSX_vMxh.cjs');
|
|
5
|
+
require('./src-2EUAmvRo.cjs');
|
|
6
|
+
const require_vite = require('./vite-DP98E6od.cjs');
|
|
7
7
|
|
|
8
8
|
exports.default = require_vite.vite_default
|
package/dist/vite.d.cts
CHANGED
package/dist/vite.d.ts
CHANGED
package/dist/vite.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./core-
|
|
2
|
-
import "./raw-
|
|
3
|
-
import "./options-
|
|
4
|
-
import "./src-
|
|
5
|
-
import { vite_default } from "./vite-
|
|
1
|
+
import "./core-CHBxRAvb.js";
|
|
2
|
+
import "./raw-Hr7QYA0U.js";
|
|
3
|
+
import "./options-BWRkHmm5.js";
|
|
4
|
+
import "./src-BDMVJUXS.js";
|
|
5
|
+
import { vite_default } from "./vite-CS2vynmi.js";
|
|
6
6
|
|
|
7
7
|
export { vite_default as default };
|
package/dist/volar.cjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
3
|
const require_chunk = require('./chunk-BCwAaXi7.cjs');
|
|
4
|
-
const require_options = require('./options-
|
|
4
|
+
const require_options = require('./options-BSX_vMxh.cjs');
|
|
5
5
|
const __vue_macros_common = require_chunk.__toESM(require("@vue-macros/common"));
|
|
6
6
|
const ts_macro = require_chunk.__toESM(require("ts-macro"));
|
|
7
|
-
const __vue_language_core_lib_codegen_style_classProperty_js = require_chunk.__toESM(require("@vue/language-core/lib/codegen/style/classProperty.js"));
|
|
8
|
-
const __vue_language_core_lib_utils_parseCssClassNames_js = require_chunk.__toESM(require("@vue/language-core/lib/utils/parseCssClassNames.js"));
|
|
9
7
|
|
|
10
8
|
//#region src/volar/define-component.ts
|
|
11
9
|
function transformDefineComponent(node, parent, options) {
|
|
@@ -27,16 +25,10 @@ function transformDefineComponent(node, parent, options) {
|
|
|
27
25
|
|
|
28
26
|
//#endregion
|
|
29
27
|
//#region src/volar/define-style.ts
|
|
30
|
-
function transformDefineStyle(
|
|
31
|
-
if (!defineStyles?.length) return;
|
|
28
|
+
function transformDefineStyle({ expression, isCssModules }, index, options) {
|
|
32
29
|
const { ts, codes, ast } = options;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
addEmbeddedCode(expression, index, options);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function* generateCssClassesType(css, offset, index) {
|
|
39
|
-
for (const className of [...(0, __vue_language_core_lib_utils_parseCssClassNames_js.parseCssClassNames)(css)]) yield* (0, __vue_language_core_lib_codegen_style_classProperty_js.generateClassProperty)(index, className.text, className.offset + offset, "string");
|
|
30
|
+
if (isCssModules && expression?.arguments[0] && !expression.typeArguments && ts.isTemplateLiteral(expression.arguments[0])) (0, ts_macro.replaceRange)(codes, expression.arguments.pos - 1, expression.arguments.pos - 1, `<{`, ...parseCssClassNames(expression.arguments[0].getText(ast).slice(1, -1)).map(({ text }) => `\n'${text.slice(1)}': string`), "\n}>");
|
|
31
|
+
addEmbeddedCode(expression, index, options);
|
|
40
32
|
}
|
|
41
33
|
function addEmbeddedCode(expression, index, options) {
|
|
42
34
|
const { ts, ast } = options;
|
|
@@ -67,16 +59,33 @@ function addEmbeddedCode(expression, index, options) {
|
|
|
67
59
|
embeddedCodes: []
|
|
68
60
|
});
|
|
69
61
|
}
|
|
62
|
+
const commentReg = /(?<=\/\*)[\s\S]*?(?=\*\/)|(?<=\/\/)[\s\S]*?(?=\n)/g;
|
|
63
|
+
const cssClassNameReg = /(?=(\.[a-z_][-\w]*)[\s.,+~>:#)[{])/gi;
|
|
64
|
+
const fragmentReg = /(?<=\{)[^{]*(?=(?<!\\);)/g;
|
|
65
|
+
function parseCssClassNames(css) {
|
|
66
|
+
for (const reg of [commentReg, fragmentReg]) css = css.replace(reg, (match) => " ".repeat(match.length));
|
|
67
|
+
const matches = css.matchAll(cssClassNameReg);
|
|
68
|
+
const result = [];
|
|
69
|
+
for (const match of matches) {
|
|
70
|
+
const matchText = match[1];
|
|
71
|
+
if (matchText) result.push({
|
|
72
|
+
offset: match.index,
|
|
73
|
+
text: matchText
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
70
78
|
|
|
71
79
|
//#endregion
|
|
72
80
|
//#region src/volar/transform.ts
|
|
73
81
|
function transformJsxMacros(rootMap, options) {
|
|
74
82
|
const { ts, codes, ast } = options;
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
let defineStyleIndex = 0;
|
|
84
|
+
for (const [root, macros] of rootMap) {
|
|
85
|
+
macros.defineStyle?.forEach((defaultStyle) => transformDefineStyle(defaultStyle, defineStyleIndex++, options));
|
|
77
86
|
if (!root?.body) continue;
|
|
78
87
|
const asyncModifier = root.modifiers?.find((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword);
|
|
79
|
-
if (asyncModifier &&
|
|
88
|
+
if (asyncModifier && macros.defineComponent) (0, ts_macro.replaceRange)(codes, asyncModifier.pos, asyncModifier.end);
|
|
80
89
|
const result = `({}) as __VLS_PickNotAny<typeof ${__vue_macros_common.HELPER_PREFIX}ctx.render, {}> & { __ctx: typeof ${__vue_macros_common.HELPER_PREFIX}ctx }`;
|
|
81
90
|
const propsType = root.parameters[0]?.type ? String(root.parameters[0].type.getText(ast)) : "{}";
|
|
82
91
|
(0, ts_macro.replaceRange)(codes, root.parameters.pos, root.parameters.pos, ts.isArrowFunction(root) && root.parameters.pos === root.pos ? "(" : "", `${__vue_macros_common.HELPER_PREFIX}props: typeof ${__vue_macros_common.HELPER_PREFIX}ctx.props & ${propsType}, `, `${__vue_macros_common.HELPER_PREFIX}placeholder?: {}, `, `${__vue_macros_common.HELPER_PREFIX}ctx = {} as Awaited<ReturnType<typeof ${__vue_macros_common.HELPER_PREFIX}setup>>, `, `${__vue_macros_common.HELPER_PREFIX}setup = (${asyncModifier ? "async" : ""}(`);
|
|
@@ -87,16 +96,16 @@ function transformJsxMacros(rootMap, options) {
|
|
|
87
96
|
}
|
|
88
97
|
ts.forEachChild(root.body, (node) => {
|
|
89
98
|
if (ts.isReturnStatement(node) && node.expression) {
|
|
90
|
-
const props = [...
|
|
99
|
+
const props = [...macros.defineModel ?? []];
|
|
91
100
|
const elements = root.parameters[0] && !root.parameters[0].type && ts.isObjectBindingPattern(root.parameters[0].name) ? root.parameters[0].name.elements : [];
|
|
92
101
|
for (const element of elements) if (ts.isIdentifier(element.name)) props.push(`${element.name.escapedText}${element.initializer && ts.isNonNullExpression(element.initializer) ? ":" : "?:"} typeof ${element.name.escapedText}`);
|
|
93
|
-
const shouldWrapByCall = (ts.isArrowFunction(node.expression) || ts.isFunctionExpression(node.expression)) &&
|
|
102
|
+
const shouldWrapByCall = (ts.isArrowFunction(node.expression) || ts.isFunctionExpression(node.expression)) && macros.defineComponent;
|
|
94
103
|
(0, ts_macro.replaceRange)(codes, node.getStart(ast), node.expression.getStart(ast), `const ${__vue_macros_common.HELPER_PREFIX}render = `, shouldWrapByCall ? "(" : "");
|
|
95
104
|
(0, ts_macro.replaceRange)(codes, node.expression.end, node.expression.end, shouldWrapByCall ? ")()" : "", `
|
|
96
105
|
return {
|
|
97
106
|
props: {} as {${props.join(", ")}},
|
|
98
|
-
slots: {} as ${
|
|
99
|
-
expose: (exposed: import('vue').ShallowUnwrapRef<${
|
|
107
|
+
slots: {} as ${macros.defineSlots ?? "{}"},
|
|
108
|
+
expose: (exposed: import('vue').ShallowUnwrapRef<${macros.defineExpose ?? "{}"}>) => {},
|
|
100
109
|
render: ${__vue_macros_common.HELPER_PREFIX}render,
|
|
101
110
|
}`);
|
|
102
111
|
}
|
|
@@ -118,7 +127,6 @@ ${defineSlots}
|
|
|
118
127
|
${defineExpose}
|
|
119
128
|
${defineStyle}
|
|
120
129
|
type ${__vue_macros_common.HELPER_PREFIX}StyleArgs = [style: string, options?: { scoped?: boolean }];
|
|
121
|
-
type ${__vue_macros_common.HELPER_PREFIX}PrettifyLocal<T> = { [K in keyof T]: T[K]; } & {};
|
|
122
130
|
// @ts-ignore
|
|
123
131
|
type __VLS_IsAny<T> = 0 extends 1 & T ? true : false; type __VLS_PickNotAny<A, B> = __VLS_IsAny<A> extends true ? B : A;
|
|
124
132
|
`;
|
|
@@ -165,11 +173,6 @@ function getRootMap(options) {
|
|
|
165
173
|
const { ts, ast, codes } = options;
|
|
166
174
|
const rootMap = new Map();
|
|
167
175
|
function walk(node, parents) {
|
|
168
|
-
ts.forEachChild(node, (child) => {
|
|
169
|
-
parents.unshift(node);
|
|
170
|
-
walk(child, parents);
|
|
171
|
-
parents.shift();
|
|
172
|
-
});
|
|
173
176
|
const root = parents[1] && (ts.isArrowFunction(parents[1]) || ts.isFunctionExpression(parents[1]) || ts.isFunctionDeclaration(parents[1])) ? parents[1] : void 0;
|
|
174
177
|
if (root && parents[2] && ts.isCallExpression(parents[2]) && !parents[2].typeArguments && options.defineComponent.alias.includes(parents[2].expression.getText(ast))) {
|
|
175
178
|
if (!rootMap.has(root)) rootMap.set(root, {});
|
|
@@ -179,40 +182,50 @@ function getRootMap(options) {
|
|
|
179
182
|
}
|
|
180
183
|
}
|
|
181
184
|
const macro = getMacro(node, ts, options);
|
|
182
|
-
if (
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
185
|
+
if (macro) {
|
|
186
|
+
const { expression, initializer } = macro;
|
|
187
|
+
let isRequired = macro.isRequired;
|
|
188
|
+
if (!rootMap.has(root)) rootMap.set(root, {});
|
|
189
|
+
const macroName = expression.expression.getText(ast);
|
|
190
|
+
if (macroName.startsWith("defineStyle")) {
|
|
191
|
+
(rootMap.get(root).defineStyle ??= []).push({
|
|
192
|
+
expression,
|
|
193
|
+
isCssModules: ts.isVariableStatement(node)
|
|
194
|
+
});
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (root) {
|
|
198
|
+
if (options.defineModel.alias.includes(macroName)) {
|
|
199
|
+
const modelName = expression.arguments[0] && ts.isStringLiteralLike(expression.arguments[0]) ? expression.arguments[0].text : "modelValue";
|
|
200
|
+
const modelOptions = expression.arguments[0] && ts.isStringLiteralLike(expression.arguments[0]) ? expression.arguments[1] : expression.arguments[0];
|
|
201
|
+
if (modelOptions && ts.isObjectLiteralExpression(modelOptions)) {
|
|
202
|
+
let hasRequired = false;
|
|
203
|
+
for (const prop of modelOptions.properties) if (ts.isPropertyAssignment(prop) && prop.name.getText(ast) === "required") {
|
|
204
|
+
hasRequired = true;
|
|
205
|
+
isRequired = prop.initializer.kind === ts.SyntaxKind.TrueKeyword;
|
|
206
|
+
}
|
|
207
|
+
if (!hasRequired && isRequired) (0, ts_macro.replaceRange)(codes, modelOptions.end - 1, modelOptions.end - 1, `${!modelOptions.properties.hasTrailingComma && modelOptions.properties.length ? "," : ""} required: true`);
|
|
208
|
+
} else if (isRequired) (0, ts_macro.replaceRange)(codes, expression.arguments.end, expression.arguments.end, `${!expression.arguments.hasTrailingComma && expression.arguments.length ? "," : ""} { required: true }`);
|
|
209
|
+
const id = toValidAssetId(modelName, `${__vue_macros_common.HELPER_PREFIX}model`);
|
|
210
|
+
const typeString = `import('vue').UnwrapRef<typeof ${id}>`;
|
|
211
|
+
const defineModel = rootMap.get(root).defineModel ??= [];
|
|
212
|
+
defineModel.push(`${modelName.includes("-") ? `'${modelName}'` : modelName}${isRequired ? ":" : "?:"} ${typeString}`, `'onUpdate:${modelName}'?: ($event: ${typeString}) => any`);
|
|
213
|
+
if (expression.typeArguments?.[1]) defineModel.push(`${modelName}Modifiers?: Partial<Record<${expression.typeArguments[1].getText(ast)}, boolean>>`);
|
|
214
|
+
if (ts.isVariableStatement(node)) (0, ts_macro.replaceRange)(codes, initializer.getStart(ast), initializer.getStart(ast), `// @ts-ignore\n${id};\nlet ${id} = `);
|
|
215
|
+
} else if (options.defineSlots.alias.includes(macroName)) {
|
|
216
|
+
(0, ts_macro.replaceRange)(codes, expression.getStart(ast), expression.getStart(ast), `// @ts-ignore\n${__vue_macros_common.HELPER_PREFIX}slots;\nconst ${__vue_macros_common.HELPER_PREFIX}slots = `);
|
|
217
|
+
rootMap.get(root).defineSlots = `Partial<typeof ${__vue_macros_common.HELPER_PREFIX}slots>`;
|
|
218
|
+
} else if (options.defineExpose.alias.includes(macroName)) {
|
|
219
|
+
(0, ts_macro.replaceRange)(codes, expression.getStart(ast), expression.getStart(ast), `// @ts-ignore\n${__vue_macros_common.HELPER_PREFIX}exposed;\nconst ${__vue_macros_common.HELPER_PREFIX}exposed = `);
|
|
220
|
+
rootMap.get(root).defineExpose = `typeof ${__vue_macros_common.HELPER_PREFIX}exposed`;
|
|
200
221
|
}
|
|
201
|
-
|
|
202
|
-
} else if (isRequired) (0, ts_macro.replaceRange)(codes, expression.arguments.end, expression.arguments.end, `${!expression.arguments.hasTrailingComma && expression.arguments.length ? "," : ""} { required: true }`);
|
|
203
|
-
const id = toValidAssetId(modelName, `${__vue_macros_common.HELPER_PREFIX}model`);
|
|
204
|
-
const typeString = `import('vue').UnwrapRef<typeof ${id}>`;
|
|
205
|
-
const defineModel = rootMap.get(root).defineModel ??= [];
|
|
206
|
-
defineModel.push(`${modelName.includes("-") ? `'${modelName}'` : modelName}${isRequired ? ":" : "?:"} ${typeString}`, `'onUpdate:${modelName}'?: ($event: ${typeString}) => any`);
|
|
207
|
-
if (expression.typeArguments?.[1]) defineModel.push(`${modelName}Modifiers?: Partial<Record<${expression.typeArguments[1].getText(ast)}, boolean>>`);
|
|
208
|
-
(0, ts_macro.replaceRange)(codes, initializer.getStart(ast), initializer.getStart(ast), `// @ts-ignore\n${id};\nlet ${id} = `);
|
|
209
|
-
} else if (options.defineSlots.alias.includes(macroName)) {
|
|
210
|
-
(0, ts_macro.replaceRange)(codes, expression.getStart(ast), expression.getStart(ast), `// @ts-ignore\n${__vue_macros_common.HELPER_PREFIX}slots;\nconst ${__vue_macros_common.HELPER_PREFIX}slots = `);
|
|
211
|
-
rootMap.get(root).defineSlots = `Partial<typeof ${__vue_macros_common.HELPER_PREFIX}slots>`;
|
|
212
|
-
} else if (options.defineExpose.alias.includes(macroName)) {
|
|
213
|
-
(0, ts_macro.replaceRange)(codes, expression.getStart(ast), expression.getStart(ast), `// @ts-ignore\n${__vue_macros_common.HELPER_PREFIX}exposed;\nconst ${__vue_macros_common.HELPER_PREFIX}exposed = `);
|
|
214
|
-
rootMap.get(root).defineExpose = `typeof ${__vue_macros_common.HELPER_PREFIX}exposed`;
|
|
222
|
+
}
|
|
215
223
|
}
|
|
224
|
+
ts.forEachChild(node, (child) => {
|
|
225
|
+
parents.unshift(node);
|
|
226
|
+
walk(child, parents);
|
|
227
|
+
parents.shift();
|
|
228
|
+
});
|
|
216
229
|
}
|
|
217
230
|
ts.forEachChild(ast, (node) => walk(node, []));
|
|
218
231
|
return rootMap;
|
package/dist/volar.d.cts
CHANGED
package/dist/volar.d.ts
CHANGED