@open-dy/vibecoding-sdk-taro 0.0.1-beta.2 → 0.0.1-beta.4
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/build/plugins/app-config.cjs +0 -3
- package/dist/build/plugins/depend-card/analyze.d.ts +27 -0
- package/dist/build/plugins/depend-card/analyze.js +120 -0
- package/dist/build/plugins/depend-card/analyze.js.map +1 -0
- package/dist/build/plugins/depend-card/source.d.ts +11 -0
- package/dist/build/plugins/depend-card/source.js +107 -0
- package/dist/build/plugins/depend-card/source.js.map +1 -0
- package/dist/build/plugins/vite-depend-card.d.ts +8 -10
- package/dist/build/plugins/vite-depend-card.js +23 -118
- package/dist/build/plugins/vite-depend-card.js.map +1 -1
- package/dist/components/miniapp-open-card.d.ts +5 -4
- package/dist/components/miniapp-open-card.js +9 -4
- package/dist/components/miniapp-open-card.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/reference/sdk-api/runtime/createMicroappClient.md +4 -89
- package/dist/reference/sdk-api.json +50 -625
- package/dist/runtime/client.d.ts +0 -19
- package/dist/runtime/client.js +0 -30
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/default-client.d.ts +2 -21
- package/dist/runtime/default-client.js +2 -2
- package/package.json +1 -4
- package/dist/runtime/closed-domain-request-header.d.ts +0 -4
- package/dist/runtime/closed-domain-request-header.js +0 -8
- package/dist/runtime/closed-domain-request-header.js.map +0 -1
|
@@ -21,9 +21,6 @@ const withPreviewBasePath = (iconPath, previewBasePath) => {
|
|
|
21
21
|
function appConfigPlugin(ctx, options = {}) {
|
|
22
22
|
const previewBasePath = options.previewBasePath ?? '';
|
|
23
23
|
ctx.modifyAppConfig(({ appConfig }) => {
|
|
24
|
-
if (typeof options.isClosedDomain === 'boolean') {
|
|
25
|
-
appConfig.isClosedDomain = options.isClosedDomain;
|
|
26
|
-
}
|
|
27
24
|
if (!(process.env.TARO_ENV === 'h5' && process.env.NODE_ENV === 'development')) {
|
|
28
25
|
return appConfig;
|
|
29
26
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @description 卡片原生标签,或尚待解析的模块导出引用。 */
|
|
2
|
+
export type CardReference = true | {
|
|
3
|
+
source: string;
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
/** @description 单个源文件的紧凑分析结果;不保留 AST 和 Babel 作用域。 */
|
|
7
|
+
export interface CardModule {
|
|
8
|
+
uses: CardReference[];
|
|
9
|
+
exports: Map<string, CardReference | undefined>;
|
|
10
|
+
stars: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @desc 判断引用是否直接来自已支持的卡片组件入口。
|
|
14
|
+
* @params {CardReference} reference 组件引用。
|
|
15
|
+
* @return {boolean} 是否直接指向卡片。
|
|
16
|
+
* @example isDirectCard({ source: '@tarojs/components', name: 'MiniappOpenCard' })
|
|
17
|
+
*/
|
|
18
|
+
export declare function isDirectCard(reference: CardReference): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* @desc 一次解析并收集 JSX、React.createElement 和运行时导出之间的引用。
|
|
21
|
+
* 忽略类型导出及被遮蔽或重新赋值的局部别名;语法错误向调用方抛出。
|
|
22
|
+
* @params {string} source 源码内容。
|
|
23
|
+
* @params {string} filename 用于选择 TypeScript 和 JSX 语法的文件名。
|
|
24
|
+
* @return {CardModule} 使用点和导出关系,不递归读取其他文件。
|
|
25
|
+
* @example analyzeCardModule('export const Page = () => <miniapp-open-card />', 'page.tsx')
|
|
26
|
+
*/
|
|
27
|
+
export declare function analyzeCardModule(source: string, filename: string): CardModule;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { parse } from '@babel/parser';
|
|
2
|
+
import traverseModule from '@babel/traverse';
|
|
3
|
+
const traverse = traverseModule.default ?? traverseModule;
|
|
4
|
+
const cardComponentModules = new Set([
|
|
5
|
+
'@tarojs/components',
|
|
6
|
+
'@open-dy/vibecoding-sdk-taro/components/miniapp-open-card',
|
|
7
|
+
]);
|
|
8
|
+
/**
|
|
9
|
+
* @desc 判断引用是否直接来自已支持的卡片组件入口。
|
|
10
|
+
* @params {CardReference} reference 组件引用。
|
|
11
|
+
* @return {boolean} 是否直接指向卡片。
|
|
12
|
+
* @example isDirectCard({ source: '@tarojs/components', name: 'MiniappOpenCard' })
|
|
13
|
+
*/
|
|
14
|
+
export function isDirectCard(reference) {
|
|
15
|
+
return reference === true ||
|
|
16
|
+
(cardComponentModules.has(reference.source) && reference.name === 'MiniappOpenCard');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @desc 一次解析并收集 JSX、React.createElement 和运行时导出之间的引用。
|
|
20
|
+
* 忽略类型导出及被遮蔽或重新赋值的局部别名;语法错误向调用方抛出。
|
|
21
|
+
* @params {string} source 源码内容。
|
|
22
|
+
* @params {string} filename 用于选择 TypeScript 和 JSX 语法的文件名。
|
|
23
|
+
* @return {CardModule} 使用点和导出关系,不递归读取其他文件。
|
|
24
|
+
* @example analyzeCardModule('export const Page = () => <miniapp-open-card />', 'page.tsx')
|
|
25
|
+
*/
|
|
26
|
+
export function analyzeCardModule(source, filename) {
|
|
27
|
+
const ast = parse(source, {
|
|
28
|
+
sourceType: 'unambiguous',
|
|
29
|
+
plugins: [...(/\.[cm]?ts$/.test(filename) ? [] : ['jsx']),
|
|
30
|
+
...(/\.[cm]?tsx?$/.test(filename) ? ['typescript'] : []), 'decorators-legacy'],
|
|
31
|
+
});
|
|
32
|
+
const result = { uses: [], exports: new Map(), stars: [] };
|
|
33
|
+
/** @description 按词法绑定追踪导入及不可变别名,避免将同名业务组件识别为卡片。 */
|
|
34
|
+
function reference(node, scope, seen = new Set(), allowUnbound = false) {
|
|
35
|
+
if (!node)
|
|
36
|
+
return;
|
|
37
|
+
if (node.type === 'StringLiteral')
|
|
38
|
+
return node.value === 'miniapp-open-card' ? true : undefined;
|
|
39
|
+
if (node.type === 'JSXMemberExpression' || node.type === 'MemberExpression') {
|
|
40
|
+
const binding = scope.getBinding(node.object.name);
|
|
41
|
+
const name = node.computed ? node.property.value : node.property.name;
|
|
42
|
+
if (typeof name === 'string' && binding?.path.isImportNamespaceSpecifier() &&
|
|
43
|
+
binding.path.parent.importKind !== 'type') {
|
|
44
|
+
return { source: binding.path.parent.source.value, name };
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (!['Identifier', 'JSXIdentifier'].includes(node.type))
|
|
49
|
+
return;
|
|
50
|
+
if (node.name === 'miniapp-open-card')
|
|
51
|
+
return true;
|
|
52
|
+
const binding = scope.getBinding(node.name);
|
|
53
|
+
if (!binding)
|
|
54
|
+
return allowUnbound && node.name === 'MiniappOpenCard' ? true : undefined;
|
|
55
|
+
if (seen.has(binding))
|
|
56
|
+
return;
|
|
57
|
+
seen.add(binding);
|
|
58
|
+
if (binding.path.isImportSpecifier() || binding.path.isImportDefaultSpecifier()) {
|
|
59
|
+
if (binding.path.parent.importKind !== 'type' && binding.path.node.importKind !== 'type') {
|
|
60
|
+
return {
|
|
61
|
+
source: binding.path.parent.source.value,
|
|
62
|
+
name: binding.path.isImportDefaultSpecifier() ? 'default' :
|
|
63
|
+
(binding.path.node.imported.name ?? binding.path.node.imported.value),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (binding.path.isVariableDeclarator() && binding.constant) {
|
|
68
|
+
return reference(binding.path.node.init, binding.path.scope, seen, allowUnbound);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** @description 记录真实渲染点;仅导入或转导出不会被视为使用。 */
|
|
72
|
+
function use(node, scope) {
|
|
73
|
+
const target = reference(node, scope, new Set(), true);
|
|
74
|
+
if (target)
|
|
75
|
+
result.uses.push(target);
|
|
76
|
+
}
|
|
77
|
+
traverse(ast, {
|
|
78
|
+
JSXOpeningElement(p) { use(p.node.name, p.scope); },
|
|
79
|
+
CallExpression(p) {
|
|
80
|
+
const callee = p.node.callee;
|
|
81
|
+
const binding = callee.type === 'Identifier' ? p.scope.getBinding(callee.name) : null;
|
|
82
|
+
const importedCreateElement = binding?.path.isImportSpecifier() &&
|
|
83
|
+
binding.path.parent.source.value === 'react' &&
|
|
84
|
+
binding.path.node.imported.name === 'createElement';
|
|
85
|
+
const reactBinding = callee.type === 'MemberExpression' ? p.scope.getBinding(callee.object.name) : null;
|
|
86
|
+
const reactCreateElement = callee.type === 'MemberExpression' &&
|
|
87
|
+
callee.property.name === 'createElement' &&
|
|
88
|
+
((reactBinding?.path.isImportDefaultSpecifier() || reactBinding?.path.isImportNamespaceSpecifier()) &&
|
|
89
|
+
reactBinding.path.parent.source.value === 'react');
|
|
90
|
+
if (importedCreateElement || reactCreateElement)
|
|
91
|
+
use(p.node.arguments[0], p.scope);
|
|
92
|
+
},
|
|
93
|
+
ExportNamedDeclaration(p) {
|
|
94
|
+
if (p.node.exportKind === 'type')
|
|
95
|
+
return;
|
|
96
|
+
for (const specifier of p.node.specifiers) {
|
|
97
|
+
if (specifier.type !== 'ExportSpecifier' || specifier.exportKind === 'type')
|
|
98
|
+
continue;
|
|
99
|
+
const exported = specifier.exported.name ?? specifier.exported.value;
|
|
100
|
+
result.exports.set(exported, p.node.source
|
|
101
|
+
? { source: p.node.source.value, name: specifier.local.name }
|
|
102
|
+
: reference(specifier.local, p.scope));
|
|
103
|
+
}
|
|
104
|
+
if (p.node.declaration) {
|
|
105
|
+
for (const [name, identifier] of Object.entries(p.getBindingIdentifiers())) {
|
|
106
|
+
result.exports.set(name, reference(identifier, p.scope));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
ExportDefaultDeclaration(p) {
|
|
111
|
+
result.exports.set('default', reference(p.node.declaration, p.scope));
|
|
112
|
+
},
|
|
113
|
+
ExportAllDeclaration(p) {
|
|
114
|
+
if (p.node.exportKind !== 'type')
|
|
115
|
+
result.stars.push(p.node.source.value);
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/build/plugins/depend-card/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @desc 创建仅扫描 sourceDir 的检测器,按源码内容缓存解析结果,不访问依赖目录。
|
|
3
|
+
* 每次扫描重新计算导出关系,使转导出修改、新增和删除立即生效;循环引用不会无限递归。
|
|
4
|
+
* @return {Function} 返回卡片依赖标记和文件、目录监听列表的扫描函数。
|
|
5
|
+
* @example const scan = createCardSourceScanner(); scan('/workspace/project/src')
|
|
6
|
+
*/
|
|
7
|
+
export declare function createCardSourceScanner(): (sourceDir: string) => {
|
|
8
|
+
depends: boolean;
|
|
9
|
+
files: string[];
|
|
10
|
+
directories: string[];
|
|
11
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { analyzeCardModule, isDirectCard } from './analyze.js';
|
|
4
|
+
const extensions = ['.ts', '.tsx', '.js', '.jsx', '.mts', '.cts', '.mjs', '.cjs'];
|
|
5
|
+
/**
|
|
6
|
+
* @desc 创建仅扫描 sourceDir 的检测器,按源码内容缓存解析结果,不访问依赖目录。
|
|
7
|
+
* 每次扫描重新计算导出关系,使转导出修改、新增和删除立即生效;循环引用不会无限递归。
|
|
8
|
+
* @return {Function} 返回卡片依赖标记和文件、目录监听列表的扫描函数。
|
|
9
|
+
* @example const scan = createCardSourceScanner(); scan('/workspace/project/src')
|
|
10
|
+
*/
|
|
11
|
+
export function createCardSourceScanner() {
|
|
12
|
+
const cache = new Map();
|
|
13
|
+
return (sourceDir) => {
|
|
14
|
+
const files = [];
|
|
15
|
+
const directories = [];
|
|
16
|
+
const modules = new Map();
|
|
17
|
+
/** @description 仅遍历真实业务源码;符号链接、测试、配置及声明文件不进入解析范围。 */
|
|
18
|
+
function visit(directory) {
|
|
19
|
+
if (!fs.existsSync(directory))
|
|
20
|
+
return;
|
|
21
|
+
directories.push(directory);
|
|
22
|
+
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
23
|
+
const file = path.join(directory, entry.name);
|
|
24
|
+
if (entry.isDirectory()) {
|
|
25
|
+
if (!['node_modules', '__tests__', '__mocks__'].includes(entry.name))
|
|
26
|
+
visit(file);
|
|
27
|
+
}
|
|
28
|
+
else if (entry.isFile() && /\.[cm]?[jt]sx?$/.test(entry.name) &&
|
|
29
|
+
!/\.(?:d|test|spec|config)\.[cm]?[jt]sx?$/.test(entry.name)) {
|
|
30
|
+
files.push(file);
|
|
31
|
+
try {
|
|
32
|
+
const source = fs.readFileSync(file, 'utf8');
|
|
33
|
+
let cached = cache.get(file);
|
|
34
|
+
if (!cached || cached.source !== source) {
|
|
35
|
+
cached = { source, module: analyzeCardModule(source, file) };
|
|
36
|
+
cache.set(file, cached);
|
|
37
|
+
}
|
|
38
|
+
modules.set(file, cached.module);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw new Error(`Cannot determine isDependCard from ${file}: ${error.message}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
visit(path.resolve(sourceDir));
|
|
47
|
+
for (const file of cache.keys())
|
|
48
|
+
if (!modules.has(file))
|
|
49
|
+
cache.delete(file);
|
|
50
|
+
/** @description 从已扫描文件表解析相对导入;不读取 src 之外的文件,也不解析 npm 包。 */
|
|
51
|
+
function resolveLocal(importer, source) {
|
|
52
|
+
if (!source.startsWith('./') && !source.startsWith('../'))
|
|
53
|
+
return;
|
|
54
|
+
const target = path.resolve(path.dirname(importer), source);
|
|
55
|
+
const candidates = [target];
|
|
56
|
+
if (/\.[cm]?jsx?$/.test(target)) {
|
|
57
|
+
candidates.push(target.replace(/\.js$/, '.ts'), target.replace(/\.jsx?$/, '.tsx'), target.replace(/\.mjs$/, '.mts'), target.replace(/\.cjs$/, '.cts'));
|
|
58
|
+
}
|
|
59
|
+
candidates.push(...extensions.map(ext => target + ext), ...extensions.map(ext => path.join(target, 'index' + ext)));
|
|
60
|
+
return candidates.find(candidate => modules.has(candidate));
|
|
61
|
+
}
|
|
62
|
+
const resolved = new Map();
|
|
63
|
+
/** @description 迭代追踪命名、默认及星号转导出,按文件和导出名去重并缓存查询结果。 */
|
|
64
|
+
function isCard(importer, reference) {
|
|
65
|
+
if (isDirectCard(reference))
|
|
66
|
+
return true;
|
|
67
|
+
if (reference === true)
|
|
68
|
+
return true;
|
|
69
|
+
const root = resolveLocal(importer, reference.source);
|
|
70
|
+
if (!root)
|
|
71
|
+
return false;
|
|
72
|
+
const key = `${root}\0${reference.name}`;
|
|
73
|
+
if (resolved.has(key))
|
|
74
|
+
return resolved.get(key);
|
|
75
|
+
const queue = [{ file: root, name: reference.name }];
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
let found = false;
|
|
78
|
+
for (let index = 0; index < queue.length && !found; index++) {
|
|
79
|
+
const { file, name } = queue[index];
|
|
80
|
+
const itemKey = `${file}\0${name}`;
|
|
81
|
+
if (seen.has(itemKey))
|
|
82
|
+
continue;
|
|
83
|
+
seen.add(itemKey);
|
|
84
|
+
const module = modules.get(file);
|
|
85
|
+
const target = module.exports.get(name);
|
|
86
|
+
const next = module.exports.has(name) ? (target ? [target] : []) :
|
|
87
|
+
(name === 'default' ? [] : module.stars.map(source => ({ source, name })));
|
|
88
|
+
for (const ref of next) {
|
|
89
|
+
if (isDirectCard(ref)) {
|
|
90
|
+
found = true;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (ref === true)
|
|
94
|
+
continue;
|
|
95
|
+
const dependency = resolveLocal(file, ref.source);
|
|
96
|
+
if (dependency)
|
|
97
|
+
queue.push({ file: dependency, name: ref.name });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
resolved.set(key, found);
|
|
101
|
+
return found;
|
|
102
|
+
}
|
|
103
|
+
const depends = files.some(file => modules.get(file).uses.some(ref => isCard(file, ref)));
|
|
104
|
+
return { depends, files, directories };
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../../src/build/plugins/depend-card/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG3D,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAA;IACvE,OAAO,CAAC,SAAiB,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,MAAM,WAAW,GAAa,EAAE,CAAA;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAA;QAE7C,qDAAqD;QACrD,SAAS,KAAK,CAAC,SAAiB;YAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAM;YACrC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBACnF,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC3D,CAAC,yCAAyC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;wBAC5C,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAC5B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;4BACxC,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAA;4BAC5D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;wBACzB,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;oBACjF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAE3E,2DAA2D;QAC3D,SAAS,YAAY,CAAC,QAAgB,EAAE,MAAc;YACpD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAM;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;YAC3D,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAA;YAC3B,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAC/E,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;YACvE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EACpD,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YAC7D,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;QAC3C,qDAAqD;QACrD,SAAS,MAAM,CAAC,QAAgB,EAAE,SAAwB;YACxD,IAAI,YAAY,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAA;YACxC,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAA;YACnC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;YACrD,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAA;YACvB,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAA;YACxC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;YAChD,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;YAC9B,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;gBACnC,MAAM,OAAO,GAAG,GAAG,IAAI,KAAK,IAAI,EAAE,CAAA;gBAClC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAC,KAAK,GAAG,IAAI,CAAC;wBAAC,MAAK;oBAAC,CAAC;oBAC9C,IAAI,GAAG,KAAK,IAAI;wBAAE,SAAQ;oBAC1B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBACjD,IAAI,UAAU;wBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;gBAClE,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;IACxC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import type { Plugin } from 'vite';
|
|
2
2
|
/**
|
|
3
|
-
* @desc
|
|
4
|
-
* 支持导入别名、命名空间及不可变局部别名;源码语法错误会向调用方抛出。
|
|
3
|
+
* @desc 检测单个文件中直接来自卡片入口的 JSX 或 React.createElement 用法。
|
|
5
4
|
* @params {string} source 待分析的源码。
|
|
6
|
-
* @params {string} filename
|
|
7
|
-
* @return {boolean}
|
|
8
|
-
* @example usesCard(
|
|
5
|
+
* @params {string} filename 用于选择 TypeScript、JSX 语法的文件名。
|
|
6
|
+
* @return {boolean} 是否检测到卡片组件使用;跨文件转导出由 scanSource 处理。
|
|
7
|
+
* @example usesCard('export const Page = () => <miniapp-open-card />', 'page.tsx')
|
|
9
8
|
*/
|
|
10
9
|
export declare function usesCard(source: string, filename: string): boolean;
|
|
11
10
|
/**
|
|
12
|
-
* @desc
|
|
13
|
-
* 目录不存在时返回空结果;语法错误会中断扫描,避免将无法解析误判为不依赖卡片。
|
|
11
|
+
* @desc 扫描业务源码并追踪源码内的相对路径转导出,跳过依赖、测试、mock、声明和配置文件。
|
|
14
12
|
* @params {string} sourceDir Taro 编译上下文提供的源码目录,可为自定义 sourceRoot。
|
|
15
|
-
* @return {{ depends: boolean, files: string[], directories: string[] }}
|
|
16
|
-
* @example scanSource(
|
|
13
|
+
* @return {{ depends: boolean, files: string[], directories: string[] }} 检测结果及监听路径。
|
|
14
|
+
* @example scanSource('/workspace/project/src')
|
|
17
15
|
*/
|
|
18
16
|
export declare function scanSource(sourceDir: string): {
|
|
19
17
|
depends: boolean;
|
|
@@ -22,7 +20,7 @@ export declare function scanSource(sourceDir: string): {
|
|
|
22
20
|
};
|
|
23
21
|
/**
|
|
24
22
|
* @desc 创建自动维护 isDependCard 的 Vite 插件,从 Taro 模块 metadata 获取编译上下文。
|
|
25
|
-
*
|
|
23
|
+
* 显式布尔配置优先;未配置时在入口序列化前扫描,开发期间复用未变化文件的解析结果。
|
|
26
24
|
* @return {Plugin} 注册到 compiler.vitePlugins 的插件实例。
|
|
27
25
|
* @example viteDependCardPlugin()
|
|
28
26
|
*/
|
|
@@ -1,148 +1,53 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
1
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
const traverse = traverseModule.default ?? traverseModule;
|
|
6
|
-
const cardComponentModules = new Set([
|
|
7
|
-
'@tarojs/components',
|
|
8
|
-
'@open-dy/vibecoding-sdk-taro/components/miniapp-open-card',
|
|
9
|
-
]);
|
|
2
|
+
import { analyzeCardModule, isDirectCard } from './depend-card/analyze.js';
|
|
3
|
+
import { createCardSourceScanner } from './depend-card/source.js';
|
|
10
4
|
/**
|
|
11
|
-
* @desc
|
|
12
|
-
* 支持导入别名、命名空间及不可变局部别名;源码语法错误会向调用方抛出。
|
|
5
|
+
* @desc 检测单个文件中直接来自卡片入口的 JSX 或 React.createElement 用法。
|
|
13
6
|
* @params {string} source 待分析的源码。
|
|
14
|
-
* @params {string} filename
|
|
15
|
-
* @return {boolean}
|
|
16
|
-
* @example usesCard(
|
|
7
|
+
* @params {string} filename 用于选择 TypeScript、JSX 语法的文件名。
|
|
8
|
+
* @return {boolean} 是否检测到卡片组件使用;跨文件转导出由 scanSource 处理。
|
|
9
|
+
* @example usesCard('export const Page = () => <miniapp-open-card />', 'page.tsx')
|
|
17
10
|
*/
|
|
18
11
|
export function usesCard(source, filename) {
|
|
19
|
-
|
|
20
|
-
sourceType: 'unambiguous',
|
|
21
|
-
plugins: [...(/\.[cm]?ts$/.test(filename) ? [] : ['jsx']),
|
|
22
|
-
...(/\.[cm]?tsx?$/.test(filename) ? ['typescript'] : []), 'decorators-legacy'],
|
|
23
|
-
});
|
|
24
|
-
let found = false;
|
|
25
|
-
/**
|
|
26
|
-
* @description 追溯组件表达式的词法绑定,区分真正的卡片组件与同名局部组件。
|
|
27
|
-
* @param {object} node JSX 标签或 createElement 的组件参数节点。
|
|
28
|
-
* @param {object} scope 当前 Babel 作用域,用于解析导入和局部别名。
|
|
29
|
-
* @param {Set<object>} seen 当前追溯链已访问的绑定,缺省为空集合,用于防止循环引用。
|
|
30
|
-
* @returns {boolean} 表达式是否指向卡片组件。
|
|
31
|
-
*/
|
|
32
|
-
function isCard(node, scope, seen = new Set()) {
|
|
33
|
-
if (!node)
|
|
34
|
-
return false;
|
|
35
|
-
if (node.type === 'StringLiteral')
|
|
36
|
-
return node.value === 'miniapp-open-card';
|
|
37
|
-
if (node.type === 'JSXMemberExpression' || node.type === 'MemberExpression') {
|
|
38
|
-
const binding = scope.getBinding(node.object.name);
|
|
39
|
-
return node.property.name === 'MiniappOpenCard' &&
|
|
40
|
-
binding?.path.isImportNamespaceSpecifier() &&
|
|
41
|
-
cardComponentModules.has(binding.path.parent.source.value);
|
|
42
|
-
}
|
|
43
|
-
if (!['Identifier', 'JSXIdentifier'].includes(node.type))
|
|
44
|
-
return false;
|
|
45
|
-
if (node.name === 'miniapp-open-card')
|
|
46
|
-
return true;
|
|
47
|
-
const binding = scope.getBinding(node.name);
|
|
48
|
-
if (!binding)
|
|
49
|
-
return node.name === 'MiniappOpenCard';
|
|
50
|
-
if (seen.has(binding))
|
|
51
|
-
return false;
|
|
52
|
-
seen.add(binding);
|
|
53
|
-
if (binding.path.isImportSpecifier()) {
|
|
54
|
-
return cardComponentModules.has(binding.path.parent.source.value) &&
|
|
55
|
-
binding.path.parent.importKind !== 'type' &&
|
|
56
|
-
binding.path.node.importKind !== 'type' &&
|
|
57
|
-
(binding.path.node.imported.name ?? binding.path.node.imported.value) === 'MiniappOpenCard';
|
|
58
|
-
}
|
|
59
|
-
if (binding.path.isVariableDeclarator() && binding.constant) {
|
|
60
|
-
return isCard(binding.path.node.init, binding.path.scope, seen);
|
|
61
|
-
}
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
traverse(ast, {
|
|
65
|
-
JSXOpeningElement(p) {
|
|
66
|
-
if (isCard(p.node.name, p.scope))
|
|
67
|
-
found = true;
|
|
68
|
-
},
|
|
69
|
-
CallExpression(p) {
|
|
70
|
-
const callee = p.node.callee;
|
|
71
|
-
const binding = callee.type === 'Identifier' ? p.scope.getBinding(callee.name) : null;
|
|
72
|
-
const importedCreateElement = binding?.path.isImportSpecifier() &&
|
|
73
|
-
binding.path.parent.source.value === 'react' &&
|
|
74
|
-
binding.path.node.imported.name === 'createElement';
|
|
75
|
-
const reactBinding = callee.type === 'MemberExpression' ? p.scope.getBinding(callee.object.name) : null;
|
|
76
|
-
const reactCreateElement = callee.type === 'MemberExpression' &&
|
|
77
|
-
callee.property.name === 'createElement' &&
|
|
78
|
-
((reactBinding?.path.isImportDefaultSpecifier() || reactBinding?.path.isImportNamespaceSpecifier()) &&
|
|
79
|
-
reactBinding.path.parent.source.value === 'react');
|
|
80
|
-
if ((importedCreateElement || reactCreateElement) && isCard(p.node.arguments[0], p.scope))
|
|
81
|
-
found = true;
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
return found;
|
|
12
|
+
return analyzeCardModule(source, filename).uses.some(isDirectCard);
|
|
85
13
|
}
|
|
86
14
|
/**
|
|
87
|
-
* @desc
|
|
88
|
-
* 目录不存在时返回空结果;语法错误会中断扫描,避免将无法解析误判为不依赖卡片。
|
|
15
|
+
* @desc 扫描业务源码并追踪源码内的相对路径转导出,跳过依赖、测试、mock、声明和配置文件。
|
|
89
16
|
* @params {string} sourceDir Taro 编译上下文提供的源码目录,可为自定义 sourceRoot。
|
|
90
|
-
* @return {{ depends: boolean, files: string[], directories: string[] }}
|
|
91
|
-
* @example scanSource(
|
|
17
|
+
* @return {{ depends: boolean, files: string[], directories: string[] }} 检测结果及监听路径。
|
|
18
|
+
* @example scanSource('/workspace/project/src')
|
|
92
19
|
*/
|
|
93
20
|
export function scanSource(sourceDir) {
|
|
94
|
-
|
|
95
|
-
const files = [];
|
|
96
|
-
const directories = [];
|
|
97
|
-
/**
|
|
98
|
-
* @description 遍历单个目录并累积结果;命中卡片后仍继续收集其他文件的监听路径。
|
|
99
|
-
* @param {string} directory 当前待遍历的目录。
|
|
100
|
-
* @returns {void} 结果写入本次扫描的集合。
|
|
101
|
-
*/
|
|
102
|
-
function visit(directory) {
|
|
103
|
-
if (!fs.existsSync(directory))
|
|
104
|
-
return;
|
|
105
|
-
directories.push(directory);
|
|
106
|
-
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
107
|
-
const file = path.join(directory, entry.name);
|
|
108
|
-
if (entry.isDirectory()) {
|
|
109
|
-
if (!['node_modules', '__tests__', '__mocks__'].includes(entry.name))
|
|
110
|
-
visit(file);
|
|
111
|
-
}
|
|
112
|
-
else if (entry.isFile() && /\.[cm]?[jt]sx?$/.test(entry.name) &&
|
|
113
|
-
!/\.(?:d|test|spec|config)\.[cm]?[jt]sx?$/.test(entry.name)) {
|
|
114
|
-
files.push(file);
|
|
115
|
-
try {
|
|
116
|
-
if (usesCard(fs.readFileSync(file, 'utf8'), file))
|
|
117
|
-
depends = true;
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
throw new Error(`Cannot determine isDependCard from ${file}: ${error.message}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
visit(sourceDir);
|
|
126
|
-
return { depends, files, directories };
|
|
21
|
+
return createCardSourceScanner()(sourceDir);
|
|
127
22
|
}
|
|
128
23
|
/**
|
|
129
24
|
* @desc 创建自动维护 isDependCard 的 Vite 插件,从 Taro 模块 metadata 获取编译上下文。
|
|
130
|
-
*
|
|
25
|
+
* 显式布尔配置优先;未配置时在入口序列化前扫描,开发期间复用未变化文件的解析结果。
|
|
131
26
|
* @return {Plugin} 注册到 compiler.vitePlugins 的插件实例。
|
|
132
27
|
* @example viteDependCardPlugin()
|
|
133
28
|
*/
|
|
134
29
|
export function viteDependCardPlugin() {
|
|
135
30
|
let sourceDir;
|
|
136
31
|
let viteCompilerContext;
|
|
32
|
+
const scan = createCardSourceScanner();
|
|
33
|
+
const settings = new WeakMap();
|
|
137
34
|
/**
|
|
138
35
|
* @description 重新扫描源码并更新共享应用配置,只记录依赖标记是否变化。
|
|
139
36
|
* @returns {{ depends: boolean, files: string[], directories: string[], changed: boolean }} 扫描结果及变化标记。
|
|
140
37
|
*/
|
|
141
38
|
const update = () => {
|
|
142
|
-
const result = scanSource(sourceDir);
|
|
143
39
|
const config = viteCompilerContext.app.config;
|
|
40
|
+
const previous = settings.get(config);
|
|
41
|
+
// Do not mistake our own write on a previous watch pass for user configuration.
|
|
42
|
+
const explicit = previous && config.isDependCard === previous.lastValue
|
|
43
|
+
? previous.explicit
|
|
44
|
+
: (typeof config.isDependCard === 'boolean' ? config.isDependCard : undefined);
|
|
45
|
+
const result = explicit === undefined ? scan(sourceDir) : {
|
|
46
|
+
depends: explicit, files: [], directories: [],
|
|
47
|
+
};
|
|
144
48
|
const changed = config.isDependCard !== result.depends;
|
|
145
49
|
config.isDependCard = result.depends;
|
|
50
|
+
settings.set(config, { explicit, lastValue: result.depends });
|
|
146
51
|
return { ...result, changed };
|
|
147
52
|
};
|
|
148
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-depend-card.js","sourceRoot":"","sources":["../../../src/build/plugins/vite-depend-card.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"vite-depend-card.js","sourceRoot":"","sources":["../../../src/build/plugins/vite-depend-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,16 @@ export interface MiniappOpenCardErrorDetail {
|
|
|
9
9
|
export interface MiniappOpenCardProps extends Omit<StandardProps, 'children'> {
|
|
10
10
|
appId: string;
|
|
11
11
|
path: string;
|
|
12
|
-
|
|
12
|
+
/** @desc 卡片初始化对象;省略时传空对象。禁止传 null、数组或 JSON 字符串。 */
|
|
13
|
+
initData?: Record<string, unknown>;
|
|
13
14
|
onLoad?: BaseEventOrigFunction<Record<string, never>>;
|
|
14
15
|
onError?: BaseEventOrigFunction<MiniappOpenCardErrorDetail>;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
* @desc 承载同一 OpenCard;SDK
|
|
18
|
+
* @desc 承载同一 OpenCard;SDK 选择环境版本并为空初始化参数提供对象,错误类型直接报错。
|
|
18
19
|
* @params {MiniappOpenCardProps} props 卡片标识、页面路径和生命周期回调。
|
|
19
|
-
* @return {React.ReactElement}
|
|
20
|
-
* @example <MiniappOpenCard appId={OPEN_CARD_ID} path="pages/index/index" />
|
|
20
|
+
* @return {React.ReactElement} 注入环境版本与初始化对象的原生卡片组件。
|
|
21
|
+
* @example <MiniappOpenCard appId={OPEN_CARD_ID} path="pages/index/index" initData={{}} />
|
|
21
22
|
*/
|
|
22
23
|
export declare function MiniappOpenCard(props: MiniappOpenCardProps): import("react").ReactElement<MiniappOpenCardProps & {
|
|
23
24
|
envVersion: MiniappOpenCardEnvVersion;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { createElement } from 'react';
|
|
2
2
|
import { MiniappOpenCard as NativeMiniappOpenCard } from '#miniapp-open-card-native';
|
|
3
3
|
/**
|
|
4
|
-
* @desc 承载同一 OpenCard;SDK
|
|
4
|
+
* @desc 承载同一 OpenCard;SDK 选择环境版本并为空初始化参数提供对象,错误类型直接报错。
|
|
5
5
|
* @params {MiniappOpenCardProps} props 卡片标识、页面路径和生命周期回调。
|
|
6
|
-
* @return {React.ReactElement}
|
|
7
|
-
* @example <MiniappOpenCard appId={OPEN_CARD_ID} path="pages/index/index" />
|
|
6
|
+
* @return {React.ReactElement} 注入环境版本与初始化对象的原生卡片组件。
|
|
7
|
+
* @example <MiniappOpenCard appId={OPEN_CARD_ID} path="pages/index/index" initData={{}} />
|
|
8
8
|
*/
|
|
9
9
|
export function MiniappOpenCard(props) {
|
|
10
|
+
const initData = props.initData === undefined ? {} : props.initData;
|
|
11
|
+
if (initData === null || typeof initData !== 'object' || Array.isArray(initData)
|
|
12
|
+
|| Object.prototype.toString.call(initData) !== '[object Object]') {
|
|
13
|
+
throw new TypeError('MiniappOpenCard initData 必须是对象;无初始化数据时传 {},不能传 null、数组或 JSON 字符串。');
|
|
14
|
+
}
|
|
10
15
|
let envVersion = 'current';
|
|
11
16
|
try {
|
|
12
17
|
const runtime = typeof tt === 'undefined' ? undefined : tt;
|
|
@@ -19,6 +24,6 @@ export function MiniappOpenCard(props) {
|
|
|
19
24
|
catch {
|
|
20
25
|
// 与 navigateToMiniProgram 保持一致:无法读取宿主环境时使用 current。
|
|
21
26
|
}
|
|
22
|
-
return createElement(NativeMiniappOpenCard, { ...props, envVersion });
|
|
27
|
+
return createElement(NativeMiniappOpenCard, { ...props, initData, envVersion });
|
|
23
28
|
}
|
|
24
29
|
//# sourceMappingURL=miniapp-open-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miniapp-open-card.js","sourceRoot":"","sources":["../../src/components/miniapp-open-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"miniapp-open-card.js","sourceRoot":"","sources":["../../src/components/miniapp-open-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAyBpF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IACnE,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;WAC3E,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,iBAAiB,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,UAAU,GAA8B,SAAS,CAAA;IACrD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1D,MAAM,OAAO,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAA;QAC9D,IAAI,OAAO,KAAK,aAAa;YAAE,UAAU,GAAG,QAAQ,CAAA;aAC/C,IAAI,OAAO,KAAK,SAAS;YAAE,UAAU,GAAG,SAAS,CAAA;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IACD,OAAO,aAAa,CAAC,qBAAqB,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;AACjF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './runtime.js';
|
|
2
|
-
export * from './build.js';
|
|
1
|
+
export * from './runtime/index.js';
|
|
2
|
+
export * from './build/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './runtime.js';
|
|
2
|
-
export * from './build.js';
|
|
1
|
+
export * from './runtime/index.js';
|
|
2
|
+
export * from './build/index.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
|