@mybricks/to-code-taro 1.0.3 → 1.0.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/cjs/core/comlib/_AesEncode.js +115 -0
- package/dist/cjs/core/comlib/_BackTo.js +80 -0
- package/dist/cjs/core/comlib/_CallPhone.js +58 -0
- package/dist/cjs/core/comlib/_ChooseFile.js +103 -0
- package/dist/cjs/core/comlib/_ChooseMedia.js +70 -0
- package/dist/cjs/core/comlib/_Connector.js +92 -0
- package/dist/cjs/core/comlib/_ConnectorGlobalHeaders.js +79 -0
- package/dist/cjs/core/comlib/_Format.js +123 -0
- package/dist/cjs/core/comlib/_GetLocation.js +60 -0
- package/dist/cjs/core/comlib/_GetStorage.js +68 -0
- package/dist/cjs/core/comlib/_GetSystemInfo.js +62 -0
- package/dist/cjs/core/comlib/_OpenCamera.js +73 -0
- package/dist/cjs/core/comlib/_OpenPetalMap.js +49 -0
- package/dist/cjs/core/comlib/_OpenUrl.js +62 -0
- package/dist/cjs/core/comlib/_RemoveStorage.js +68 -0
- package/dist/cjs/core/comlib/_Router.js +100 -0
- package/dist/cjs/core/comlib/_ScanQrcode.js +9 -10
- package/dist/cjs/core/comlib/_SetStorage.js +10 -19
- package/dist/cjs/core/comlib/_Share.js +58 -0
- package/dist/cjs/core/comlib/_ShowToast.js +23 -50
- package/dist/cjs/core/comlib/_TextToSpeech.js +120 -0
- package/dist/cjs/core/comlib/_TimerDebounce.js +72 -0
- package/dist/cjs/core/comlib/_TimerDelay.js +63 -0
- package/dist/cjs/core/comlib/_TimerThrottle.js +75 -0
- package/dist/cjs/core/comlib/_Vibrate.js +60 -0
- package/dist/cjs/core/comlib/index.js +68 -2
- package/dist/cjs/core/utils/ComContext.js +3 -3
- package/dist/cjs/core/utils/PopupRenderer.js +63 -0
- package/dist/cjs/core/utils/hooks.js +16 -10
- package/dist/cjs/core/utils/index.js +15 -3
- package/dist/cjs/core/utils/{page.js → pageRouter.js} +28 -14
- package/dist/cjs/core/utils/popupRouter.js +98 -0
- package/dist/cjs/core/utils/useContext.js +9 -1
- package/dist/cjs/core/utils/with.js +37 -13
- package/dist/cjs/generate/generateTaroProjectJson.js +30 -0
- package/dist/cjs/handleSlot.d.ts +2 -0
- package/dist/cjs/handleSlot.js +19 -5
- package/dist/cjs/processors/processComEvents.js +47 -5
- package/dist/cjs/processors/processScene.js +9 -5
- package/dist/cjs/processors/processSceneLogic.js +9 -5
- package/dist/cjs/shims-taro.d.ts +20 -0
- package/dist/cjs/taro-template.json +493 -351
- package/dist/cjs/toCodeTaro.d.ts +1 -1
- package/dist/cjs/toCodeTaro.js +13 -1
- package/dist/cjs/utils/builder/buildResult.d.ts +1 -0
- package/dist/cjs/utils/builder/buildResult.js +26 -0
- package/dist/cjs/utils/config/handlePageConfig.d.ts +2 -1
- package/dist/cjs/utils/config/handlePageConfig.js +3 -2
- package/dist/cjs/utils/context/createEventQueries.js +1 -1
- package/dist/cjs/utils/logic/handleProcess.js +26 -5
- package/dist/cjs/utils/templates/scene.d.ts +3 -1
- package/dist/cjs/utils/templates/scene.js +16 -4
- package/dist/esm/core/comlib/_AesEncode.js +85 -0
- package/dist/esm/core/comlib/_BackTo.js +66 -0
- package/dist/esm/core/comlib/_CallPhone.js +30 -0
- package/dist/esm/core/comlib/_ChooseFile.js +81 -0
- package/dist/esm/core/comlib/_ChooseMedia.js +38 -0
- package/dist/esm/core/comlib/_Connector.js +60 -0
- package/dist/esm/core/comlib/_ConnectorGlobalHeaders.js +56 -0
- package/dist/esm/core/comlib/_Format.js +102 -0
- package/dist/esm/core/comlib/_GetLocation.js +26 -0
- package/dist/esm/core/comlib/_GetStorage.js +44 -0
- package/dist/esm/core/comlib/_GetSystemInfo.js +32 -0
- package/dist/esm/core/comlib/_OpenCamera.js +44 -0
- package/dist/esm/core/comlib/_OpenPetalMap.js +28 -0
- package/dist/esm/core/comlib/_OpenUrl.js +36 -0
- package/dist/esm/core/comlib/_RemoveStorage.js +42 -0
- package/dist/esm/core/comlib/_Router.js +113 -0
- package/dist/esm/core/comlib/_ScanQrcode.js +10 -11
- package/dist/esm/core/comlib/_SetStorage.js +13 -25
- package/dist/esm/core/comlib/_Share.js +28 -0
- package/dist/esm/core/comlib/_ShowToast.js +32 -55
- package/dist/esm/core/comlib/_TextToSpeech.js +117 -0
- package/dist/esm/core/comlib/_TimerDebounce.js +66 -0
- package/dist/esm/core/comlib/_TimerDelay.js +47 -0
- package/dist/esm/core/comlib/_TimerThrottle.js +69 -0
- package/dist/esm/core/comlib/_Vibrate.js +34 -0
- package/dist/esm/core/comlib/index.js +35 -1
- package/dist/esm/core/utils/ComContext.js +1 -1
- package/dist/esm/core/utils/PopupRenderer.js +27 -0
- package/dist/esm/core/utils/hooks.js +22 -10
- package/dist/esm/core/utils/index.js +3 -1
- package/dist/esm/core/utils/pageRouter.js +69 -0
- package/dist/esm/core/utils/popupRouter.js +116 -0
- package/dist/esm/core/utils/useContext.js +14 -2
- package/dist/esm/core/utils/with.js +62 -19
- package/dist/esm/generate/generateTaroProjectJson.js +35 -1
- package/dist/esm/handleSlot.d.ts +2 -0
- package/dist/esm/handleSlot.js +20 -4
- package/dist/esm/processors/processComEvents.js +62 -5
- package/dist/esm/processors/processScene.js +11 -3
- package/dist/esm/processors/processSceneLogic.js +15 -5
- package/dist/esm/shims-taro.d.ts +20 -0
- package/dist/esm/taro-template.json +493 -351
- package/dist/esm/toCodeTaro.d.ts +1 -1
- package/dist/esm/toCodeTaro.js +16 -1
- package/dist/esm/utils/builder/buildResult.d.ts +1 -0
- package/dist/esm/utils/builder/buildResult.js +21 -0
- package/dist/esm/utils/config/handlePageConfig.d.ts +2 -1
- package/dist/esm/utils/config/handlePageConfig.js +5 -1
- package/dist/esm/utils/context/createEventQueries.js +2 -1
- package/dist/esm/utils/logic/handleProcess.js +31 -4
- package/dist/esm/utils/templates/scene.d.ts +3 -1
- package/dist/esm/utils/templates/scene.js +13 -5
- package/package.json +4 -2
- package/dist/esm/core/utils/page.js +0 -50
package/dist/cjs/toCodeTaro.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface ToTaroCodeConfig {
|
|
|
24
24
|
callName?: string;
|
|
25
25
|
};
|
|
26
26
|
getComponentPackageName: (props?: any) => string;
|
|
27
|
-
getUtilsPackageName: () => string;
|
|
27
|
+
getUtilsPackageName: (props?: any) => string;
|
|
28
28
|
getPageId?: (id: string) => string;
|
|
29
29
|
getBus?: (namespace: string) => {
|
|
30
30
|
title: string;
|
package/dist/cjs/toCodeTaro.js
CHANGED
|
@@ -91,8 +91,19 @@ var getCode = (params, config) => {
|
|
|
91
91
|
const abstractEventTypeDefMap = {};
|
|
92
92
|
const jsModulesCollector = (0, import_collectJSModules.createJSModulesCollector)();
|
|
93
93
|
const pageConfigHandler = new import_handlePageConfig.HandlePageConfig();
|
|
94
|
+
const popupIds = /* @__PURE__ */ new Set();
|
|
95
|
+
tojson.scenes.forEach((s) => {
|
|
96
|
+
var _a;
|
|
97
|
+
if (s.type === "popup" || ((_a = s.deps) == null ? void 0 : _a.some((dep) => dep.namespace === "mybricks.taro.popup"))) {
|
|
98
|
+
popupIds.add(s.id);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
94
101
|
(0, import_processScene.processScenes)(scenes, {
|
|
95
|
-
config
|
|
102
|
+
config: {
|
|
103
|
+
...config,
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
hasPopups: popupIds.size > 0
|
|
106
|
+
},
|
|
96
107
|
globalVarTypeDef,
|
|
97
108
|
defaultFxsMap,
|
|
98
109
|
abstractEventTypeDefMap,
|
|
@@ -123,6 +134,7 @@ var getCode = (params, config) => {
|
|
|
123
134
|
jsModulesMap: jsModulesCollector.getMap(),
|
|
124
135
|
globalTabBarConfig: pageConfigHandler.getTabBarConfig(),
|
|
125
136
|
tabBarImageFiles: pageConfigHandler.getTabBarImageFiles(),
|
|
137
|
+
popupIds: Array.from(popupIds),
|
|
126
138
|
config
|
|
127
139
|
});
|
|
128
140
|
files.push(...finalResultData.files);
|
|
@@ -41,6 +41,7 @@ var buildFinalResults = (params) => {
|
|
|
41
41
|
jsModulesMap,
|
|
42
42
|
globalTabBarConfig,
|
|
43
43
|
tabBarImageFiles,
|
|
44
|
+
popupIds,
|
|
44
45
|
config
|
|
45
46
|
} = params;
|
|
46
47
|
const files = [];
|
|
@@ -71,6 +72,31 @@ export { jsModules };
|
|
|
71
72
|
name: "commonIndex"
|
|
72
73
|
});
|
|
73
74
|
}
|
|
75
|
+
if (popupIds.length > 0) {
|
|
76
|
+
let registryContent = "";
|
|
77
|
+
popupIds.forEach((id) => {
|
|
78
|
+
registryContent += `import Scene_${id} from '../popupComponents/${id}/index';
|
|
79
|
+
`;
|
|
80
|
+
});
|
|
81
|
+
registryContent += `
|
|
82
|
+
export const POPUP_MAP: Record<string, any> = {
|
|
83
|
+
`;
|
|
84
|
+
popupIds.forEach((id) => {
|
|
85
|
+
registryContent += ` '${id}': Scene_${id},
|
|
86
|
+
`;
|
|
87
|
+
});
|
|
88
|
+
registryContent += `};
|
|
89
|
+
|
|
90
|
+
`;
|
|
91
|
+
registryContent += `export const POPUP_IDS = ${JSON.stringify(popupIds)};
|
|
92
|
+
`;
|
|
93
|
+
files.push({
|
|
94
|
+
type: "popup",
|
|
95
|
+
content: registryContent,
|
|
96
|
+
importManager: new import_ImportManager.ImportManager(config),
|
|
97
|
+
name: "popup"
|
|
98
|
+
});
|
|
99
|
+
}
|
|
74
100
|
if (globalTabBarConfig) {
|
|
75
101
|
files.push({
|
|
76
102
|
type: "tabBarConfig",
|
|
@@ -10,9 +10,10 @@ export declare class HandlePageConfig {
|
|
|
10
10
|
/**
|
|
11
11
|
* 处理页面配置(提取 systemPage 组件数据)
|
|
12
12
|
* @param scene 场景数据
|
|
13
|
+
* @param isPopup 是否为弹窗场景
|
|
13
14
|
* @returns 页面配置内容
|
|
14
15
|
*/
|
|
15
|
-
handle(scene: ReturnType<typeof toCode>["scenes"][0]["scene"]): string | undefined;
|
|
16
|
+
handle(scene: ReturnType<typeof toCode>["scenes"][0]["scene"], isPopup?: boolean): string | undefined;
|
|
16
17
|
/**
|
|
17
18
|
* 获取全局 TabBar 配置
|
|
18
19
|
*/
|
|
@@ -31,9 +31,10 @@ var HandlePageConfig = class {
|
|
|
31
31
|
/**
|
|
32
32
|
* 处理页面配置(提取 systemPage 组件数据)
|
|
33
33
|
* @param scene 场景数据
|
|
34
|
+
* @param isPopup 是否为弹窗场景
|
|
34
35
|
* @returns 页面配置内容
|
|
35
36
|
*/
|
|
36
|
-
handle(scene) {
|
|
37
|
+
handle(scene, isPopup = false) {
|
|
37
38
|
var _a;
|
|
38
39
|
let pageConfigContent;
|
|
39
40
|
const systemPageCom = Object.values(scene.coms || {}).find((com) => {
|
|
@@ -41,7 +42,7 @@ var HandlePageConfig = class {
|
|
|
41
42
|
return ((_a2 = com.def) == null ? void 0 : _a2.namespace) === "mybricks.taro.systemPage";
|
|
42
43
|
});
|
|
43
44
|
if ((_a = systemPageCom == null ? void 0 : systemPageCom.model) == null ? void 0 : _a.data) {
|
|
44
|
-
const systemPageData = systemPageCom.model.data;
|
|
45
|
+
const systemPageData = { ...systemPageCom.model.data };
|
|
45
46
|
pageConfigContent = (0, import_content.generatePageConfigContent)(systemPageData);
|
|
46
47
|
if (!this.globalTabBarConfig && systemPageData.tabBar && Array.isArray(systemPageData.tabBar)) {
|
|
47
48
|
const pageIdToPath = (pageId) => `pages/${pageId}/index`;
|
|
@@ -69,7 +69,7 @@ var createEventQueries = (events) => {
|
|
|
69
69
|
getFxEvents: createGetFxEvents(events),
|
|
70
70
|
getEffectEvent: createGetEffectEvent(events),
|
|
71
71
|
getEventByDiagramId: (diagramId) => {
|
|
72
|
-
return events.find((event) => event.diagramId === diagramId);
|
|
72
|
+
return events.find((event) => event.diagramId === diagramId || event.id === diagramId);
|
|
73
73
|
},
|
|
74
74
|
/** 获取场景/区块的输入项事件 */
|
|
75
75
|
getFrameInputEvent: (pinId, frameId) => {
|
|
@@ -109,7 +109,7 @@ ${indent}}, appContext)
|
|
|
109
109
|
`;
|
|
110
110
|
});
|
|
111
111
|
process.nodesInvocation.forEach((props) => {
|
|
112
|
-
var _a, _b;
|
|
112
|
+
var _a, _b, _c, _d;
|
|
113
113
|
const { componentType, category, runType } = props;
|
|
114
114
|
let nextValue = getNextValue(props, config, event);
|
|
115
115
|
const isSameScope = checkIsSameScope(event, props);
|
|
@@ -119,15 +119,36 @@ ${indent}}, appContext)
|
|
|
119
119
|
}
|
|
120
120
|
if (componentType === "js") {
|
|
121
121
|
if (category === "scene") {
|
|
122
|
+
const _sceneId = props.meta.model.data._sceneId;
|
|
123
|
+
const targetScene = config.getSceneById(_sceneId);
|
|
124
|
+
const isPopup = (targetScene == null ? void 0 : targetScene.type) === "popup" || ((_a = targetScene == null ? void 0 : targetScene.deps) == null ? void 0 : _a.some((dep) => dep.namespace === "mybricks.taro.popup"));
|
|
125
|
+
const controllerName = isPopup ? "popupRouter" : "pageRouter";
|
|
122
126
|
config.addParentDependencyImport({
|
|
123
127
|
packageName: config.getComponentPackageName(),
|
|
124
|
-
dependencyNames: [
|
|
128
|
+
dependencyNames: [controllerName],
|
|
125
129
|
importType: "named"
|
|
126
130
|
});
|
|
127
|
-
const _sceneId = props.meta.model.data._sceneId;
|
|
128
131
|
const operateName = props.meta.model.data.openType === "redirect" ? "replace" : "open";
|
|
129
132
|
code += `${indent}/** 打开 ${props.meta.title} */
|
|
130
|
-
${indent}${nextCode}
|
|
133
|
+
${indent}${nextCode}${controllerName}.${operateName}("${((_b = config.getPageId) == null ? void 0 : _b.call(config, _sceneId)) || _sceneId}", ${nextValue})`;
|
|
134
|
+
} else if (category === "frameOutput") {
|
|
135
|
+
const currentScene = config.getCurrentScene();
|
|
136
|
+
const pinProxy = (_c = currentScene == null ? void 0 : currentScene.pinProxies) == null ? void 0 : _c[`${props.meta.id}-${props.id}`];
|
|
137
|
+
if ((pinProxy == null ? void 0 : pinProxy.frameId) && (pinProxy == null ? void 0 : pinProxy.pinId)) {
|
|
138
|
+
const method = pinProxy.pinId;
|
|
139
|
+
const controllerName = config.isPopup ? "popupRouter" : "pageRouter";
|
|
140
|
+
config.addParentDependencyImport({
|
|
141
|
+
packageName: config.getComponentPackageName(),
|
|
142
|
+
dependencyNames: [controllerName],
|
|
143
|
+
importType: "named"
|
|
144
|
+
});
|
|
145
|
+
if (["commit", "cancel", "apply", "close"].includes(method)) {
|
|
146
|
+
const sceneId = pinProxy.frameId || (currentScene == null ? void 0 : currentScene.id);
|
|
147
|
+
const argCode = nextValue ? `, ${nextValue}` : "";
|
|
148
|
+
code += `${indent}/** ${props.meta.title} 输出 ${method} */
|
|
149
|
+
${indent}${nextCode}${controllerName}.${method}("${sceneId}"${argCode})`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
131
152
|
} else if (category === "normal") {
|
|
132
153
|
let componentNameWithId = getComponentNameWithId(props, config, event);
|
|
133
154
|
code += `${indent}/** 调用 ${props.meta.title} */
|
|
@@ -170,7 +191,7 @@ ${indent}${nextCode}this.${currentProvider.name}_Fxs.${props.meta.ioProxy.id}(${
|
|
|
170
191
|
} else {
|
|
171
192
|
const currentProvider = getCurrentProvider({ isSameScope, props }, config);
|
|
172
193
|
currentProvider.controllers.add(props.meta.id);
|
|
173
|
-
const componentController = ((
|
|
194
|
+
const componentController = ((_d = config.getComponentController) == null ? void 0 : _d.call(config, {
|
|
174
195
|
com: props.meta,
|
|
175
196
|
scene: config.getCurrentScene()
|
|
176
197
|
})) || `controller_${props.meta.id}`;
|
|
@@ -7,13 +7,15 @@ export declare const genSlotDefineCode: (indent: string) => string;
|
|
|
7
7
|
/** 生成控制器初始化代码 */
|
|
8
8
|
export declare const genControllerInitCode: (indent: string, providerName: string) => string;
|
|
9
9
|
/** 生成完整的函数组件模板 */
|
|
10
|
-
export declare const genComponentTemplate: ({ componentName, combinedJsCode, uiResult, outputsConfig, scopeName, utilsPackageName, }: {
|
|
10
|
+
export declare const genComponentTemplate: ({ componentName, combinedJsCode, uiResult, outputsConfig, scopeName, utilsPackageName, isPopup, hasPopups, }: {
|
|
11
11
|
componentName: string;
|
|
12
12
|
combinedJsCode: string;
|
|
13
13
|
uiResult: string;
|
|
14
14
|
outputsConfig?: Record<string, Record<string, any>>;
|
|
15
15
|
scopeName?: string;
|
|
16
16
|
utilsPackageName?: string;
|
|
17
|
+
isPopup?: boolean;
|
|
18
|
+
hasPopups?: boolean;
|
|
17
19
|
}) => string;
|
|
18
20
|
/** 生成 useEffect 包装代码 */
|
|
19
21
|
export declare const wrapInEffect: (indent: string, effectCode: string) => string;
|
|
@@ -53,16 +53,28 @@ var genComponentTemplate = ({
|
|
|
53
53
|
uiResult,
|
|
54
54
|
outputsConfig,
|
|
55
55
|
scopeName,
|
|
56
|
-
utilsPackageName
|
|
56
|
+
utilsPackageName,
|
|
57
|
+
isPopup = false,
|
|
58
|
+
hasPopups = false
|
|
57
59
|
}) => {
|
|
58
|
-
|
|
60
|
+
let code = `function ${componentName}() {
|
|
59
61
|
${combinedJsCode}
|
|
60
62
|
return (
|
|
61
|
-
|
|
63
|
+
<>
|
|
64
|
+
${uiResult.split("\n").map((line) => ` ${line}`).join("\n")}
|
|
65
|
+
` + (hasPopups ? ` <PopupRenderer popupMap={POPUP_MAP} />
|
|
66
|
+
` : "") + ` </>
|
|
62
67
|
);
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
`;
|
|
71
|
+
if (isPopup) {
|
|
72
|
+
code += `(${componentName} as any).isPopup = true;
|
|
73
|
+
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
code += `export default WithWrapper(${componentName})`;
|
|
77
|
+
return code;
|
|
66
78
|
};
|
|
67
79
|
var wrapInEffect = (indent, effectCode) => {
|
|
68
80
|
return `
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import CryptoJS from 'crypto-js';
|
|
2
|
+
export default (function (context) {
|
|
3
|
+
var _inputs$encrypt, _inputs$decrypt;
|
|
4
|
+
var data = context.data;
|
|
5
|
+
var inputs = context.inputs;
|
|
6
|
+
var outputs = context.outputs;
|
|
7
|
+
|
|
8
|
+
// 模式映射
|
|
9
|
+
var modeMap = {
|
|
10
|
+
CBC: CryptoJS.mode.CBC,
|
|
11
|
+
ECB: CryptoJS.mode.ECB,
|
|
12
|
+
CFB: CryptoJS.mode.CFB,
|
|
13
|
+
OFB: CryptoJS.mode.OFB,
|
|
14
|
+
CTR: CryptoJS.mode.CTR
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// 填充方式映射
|
|
18
|
+
var paddingMap = {
|
|
19
|
+
Pkcs7: CryptoJS.pad.Pkcs7,
|
|
20
|
+
Iso97971: CryptoJS.pad.Iso97971,
|
|
21
|
+
AnsiX923: CryptoJS.pad.AnsiX923,
|
|
22
|
+
Iso10126: CryptoJS.pad.Iso10126,
|
|
23
|
+
ZeroPadding: CryptoJS.pad.ZeroPadding,
|
|
24
|
+
NoPadding: CryptoJS.pad.NoPadding
|
|
25
|
+
};
|
|
26
|
+
(_inputs$encrypt = inputs.encrypt) === null || _inputs$encrypt === void 0 || _inputs$encrypt.call(inputs, function (val) {
|
|
27
|
+
try {
|
|
28
|
+
var text = val.text || '';
|
|
29
|
+
var key = val.key || data.key || 'defaultKey1234567890123456';
|
|
30
|
+
var iv = val.iv || data.iv;
|
|
31
|
+
var mode = modeMap[val.mode || data.mode || 'CBC'];
|
|
32
|
+
var padding = paddingMap[val.padding || data.padding || 'Pkcs7'];
|
|
33
|
+
if (!text) {
|
|
34
|
+
outputs.onFail('待加密文本不能为空');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
var keyBytes = CryptoJS.enc.Utf8.parse(key);
|
|
38
|
+
var ivBytes = iv ? CryptoJS.enc.Utf8.parse(iv) : undefined;
|
|
39
|
+
var encrypted = CryptoJS.AES.encrypt(text, keyBytes, {
|
|
40
|
+
mode: mode,
|
|
41
|
+
padding: padding,
|
|
42
|
+
iv: ivBytes
|
|
43
|
+
});
|
|
44
|
+
outputs.onEncryptSuccess({
|
|
45
|
+
encryptedText: encrypted.toString(),
|
|
46
|
+
originalText: text
|
|
47
|
+
});
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error('AES加密失败:', error);
|
|
50
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || 'AES加密失败');
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
(_inputs$decrypt = inputs.decrypt) === null || _inputs$decrypt === void 0 || _inputs$decrypt.call(inputs, function (val) {
|
|
54
|
+
try {
|
|
55
|
+
var encryptedText = val.encryptedText || '';
|
|
56
|
+
var key = val.key || data.key || 'defaultKey1234567890123456';
|
|
57
|
+
var iv = val.iv || data.iv;
|
|
58
|
+
var mode = modeMap[val.mode || data.mode || 'CBC'];
|
|
59
|
+
var padding = paddingMap[val.padding || data.padding || 'Pkcs7'];
|
|
60
|
+
if (!encryptedText) {
|
|
61
|
+
outputs.onFail('待解密文本不能为空');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
var keyBytes = CryptoJS.enc.Utf8.parse(key);
|
|
65
|
+
var ivBytes = iv ? CryptoJS.enc.Utf8.parse(iv) : undefined;
|
|
66
|
+
var decrypted = CryptoJS.AES.decrypt(encryptedText, keyBytes, {
|
|
67
|
+
mode: mode,
|
|
68
|
+
padding: padding,
|
|
69
|
+
iv: ivBytes
|
|
70
|
+
});
|
|
71
|
+
var decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
|
|
72
|
+
if (!decryptedText) {
|
|
73
|
+
outputs.onFail('解密失败,可能密钥或参数不正确');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
outputs.onDecryptSuccess({
|
|
77
|
+
decryptedText: decryptedText,
|
|
78
|
+
encryptedText: encryptedText
|
|
79
|
+
});
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error('AES解密失败:', error);
|
|
82
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || 'AES解密失败');
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Taro from '@tarojs/taro';
|
|
2
|
+
export default (function (context) {
|
|
3
|
+
var _inputs$back;
|
|
4
|
+
var data = context.data;
|
|
5
|
+
var inputs = context.inputs;
|
|
6
|
+
var outputs = context.outputs;
|
|
7
|
+
(_inputs$back = inputs.back) === null || _inputs$back === void 0 || _inputs$back.call(inputs, function (val) {
|
|
8
|
+
try {
|
|
9
|
+
var _ref, _val$delta, _data$animation;
|
|
10
|
+
var delta = (_ref = (_val$delta = val === null || val === void 0 ? void 0 : val.delta) !== null && _val$delta !== void 0 ? _val$delta : data.delta) !== null && _ref !== void 0 ? _ref : 1;
|
|
11
|
+
var animation = (val === null || val === void 0 ? void 0 : val.animation) !== undefined ? val.animation : (_data$animation = data.animation) !== null && _data$animation !== void 0 ? _data$animation : true;
|
|
12
|
+
|
|
13
|
+
// 获取当前页面栈信息
|
|
14
|
+
var pages = Taro.getCurrentPages();
|
|
15
|
+
var currentIndex = pages.length - 1;
|
|
16
|
+
if (currentIndex === 0) {
|
|
17
|
+
// 如果是首页,返回失败
|
|
18
|
+
outputs.onFail('已经是首页,无法返回');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (delta > currentIndex) {
|
|
22
|
+
// 如果返回层数超过页面栈深度,返回失败
|
|
23
|
+
outputs.onFail("\u9875\u9762\u6808\u6DF1\u5EA6\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u8FD4\u56DE".concat(delta, "\u5C42"));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (delta === 1) {
|
|
27
|
+
// 返回上一页
|
|
28
|
+
Taro.navigateBack({
|
|
29
|
+
delta: 1,
|
|
30
|
+
animation: animation,
|
|
31
|
+
success: function success() {
|
|
32
|
+
return outputs.onSuccess({
|
|
33
|
+
delta: 1
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
fail: function fail(err) {
|
|
37
|
+
return outputs.onFail(err.errMsg || '返回失败');
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
// 多层返回,需要先获取目标页面信息
|
|
42
|
+
var targetPage = pages[currentIndex - delta];
|
|
43
|
+
if (targetPage) {
|
|
44
|
+
Taro.navigateBack({
|
|
45
|
+
delta: delta,
|
|
46
|
+
animation: animation,
|
|
47
|
+
success: function success() {
|
|
48
|
+
return outputs.onSuccess({
|
|
49
|
+
delta: delta,
|
|
50
|
+
targetPage: targetPage.route
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
fail: function fail(err) {
|
|
54
|
+
return outputs.onFail(err.errMsg || '返回失败');
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
outputs.onFail('目标页面不存在');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error('返回操作失败:', error);
|
|
63
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '返回操作失败');
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Taro from '@tarojs/taro';
|
|
2
|
+
export default (function (context) {
|
|
3
|
+
var _inputs$callPhone;
|
|
4
|
+
var data = context.data;
|
|
5
|
+
var inputs = context.inputs;
|
|
6
|
+
var outputs = context.outputs;
|
|
7
|
+
(_inputs$callPhone = inputs.callPhone) === null || _inputs$callPhone === void 0 || _inputs$callPhone.call(inputs, function (val) {
|
|
8
|
+
try {
|
|
9
|
+
var phoneNumber = typeof val === 'string' ? val : (val === null || val === void 0 ? void 0 : val.phoneNumber) || data.phoneNumber;
|
|
10
|
+
if (!phoneNumber) {
|
|
11
|
+
outputs.onFail('电话号码不能为空');
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
Taro.makePhoneCall({
|
|
15
|
+
phoneNumber: phoneNumber,
|
|
16
|
+
success: function success() {
|
|
17
|
+
return outputs.onSuccess({
|
|
18
|
+
phoneNumber: phoneNumber
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
fail: function fail(err) {
|
|
22
|
+
return outputs.onFail(err.errMsg || '拨打电话失败');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
} catch (error) {
|
|
26
|
+
console.error('拨打电话失败:', error);
|
|
27
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '拨打电话失败');
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import Taro from '@tarojs/taro';
|
|
2
|
+
export default (function (context) {
|
|
3
|
+
var _inputs$chooseFile;
|
|
4
|
+
var data = context.data;
|
|
5
|
+
var inputs = context.inputs;
|
|
6
|
+
var outputs = context.outputs;
|
|
7
|
+
(_inputs$chooseFile = inputs.chooseFile) === null || _inputs$chooseFile === void 0 || _inputs$chooseFile.call(inputs, function (val) {
|
|
8
|
+
try {
|
|
9
|
+
var _config$accept, _config$accept2, _config$accept3;
|
|
10
|
+
var _config = {
|
|
11
|
+
accept: (val === null || val === void 0 ? void 0 : val.accept) || data.accept || 'image/*',
|
|
12
|
+
multiple: (val === null || val === void 0 ? void 0 : val.multiple) !== undefined ? val.multiple : data.multiple || false,
|
|
13
|
+
capture: (val === null || val === void 0 ? void 0 : val.capture) || data.capture,
|
|
14
|
+
compressed: (val === null || val === void 0 ? void 0 : val.compressed) !== undefined ? val.compressed : data.compressed,
|
|
15
|
+
maxDuration: (val === null || val === void 0 ? void 0 : val.maxDuration) || data.maxDuration,
|
|
16
|
+
camera: (val === null || val === void 0 ? void 0 : val.camera) || data.camera
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// 根据文件类型选择不同的API
|
|
20
|
+
if ((_config$accept = _config.accept) !== null && _config$accept !== void 0 && _config$accept.startsWith('image/')) {
|
|
21
|
+
// 选择图片
|
|
22
|
+
Taro.chooseImage({
|
|
23
|
+
count: _config.multiple ? 9 : 1,
|
|
24
|
+
sourceType: _config.capture === 'album' ? ['album'] : _config.capture === 'camera' ? ['camera'] : ['album', 'camera'],
|
|
25
|
+
success: function success(res) {
|
|
26
|
+
outputs.onSuccess({
|
|
27
|
+
type: 'image',
|
|
28
|
+
files: res.tempFiles,
|
|
29
|
+
tempFilePaths: res.tempFilePaths
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
fail: function fail(err) {
|
|
33
|
+
return outputs.onFail(err.errMsg || '选择图片失败');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
} else if ((_config$accept2 = _config.accept) !== null && _config$accept2 !== void 0 && _config$accept2.startsWith('video/')) {
|
|
37
|
+
// 选择视频
|
|
38
|
+
Taro.chooseVideo({
|
|
39
|
+
sourceType: _config.capture === 'album' ? ['album'] : _config.capture === 'camera' ? ['camera'] : ['album', 'camera'],
|
|
40
|
+
compressed: _config.compressed,
|
|
41
|
+
maxDuration: _config.maxDuration,
|
|
42
|
+
camera: _config.camera,
|
|
43
|
+
success: function success(res) {
|
|
44
|
+
outputs.onSuccess({
|
|
45
|
+
type: 'video',
|
|
46
|
+
file: res
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
fail: function fail(err) {
|
|
50
|
+
return outputs.onFail(err.errMsg || '选择视频失败');
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
} else if ((_config$accept3 = _config.accept) !== null && _config$accept3 !== void 0 && _config$accept3.startsWith('audio/')) {
|
|
54
|
+
// 选择音频(小程序暂不支持直接选择音频文件,这里返回提示)
|
|
55
|
+
outputs.onFail('小程序暂不支持直接选择音频文件');
|
|
56
|
+
} else {
|
|
57
|
+
// 其他文件类型,使用文件选择器(如果支持)
|
|
58
|
+
if (Taro.chooseMessageFile) {
|
|
59
|
+
Taro.chooseMessageFile({
|
|
60
|
+
count: _config.multiple ? 10 : 1,
|
|
61
|
+
type: 'file',
|
|
62
|
+
success: function success(res) {
|
|
63
|
+
outputs.onSuccess({
|
|
64
|
+
type: 'file',
|
|
65
|
+
files: res.tempFiles
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
fail: function fail(err) {
|
|
69
|
+
return outputs.onFail(err.errMsg || '选择文件失败');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
outputs.onFail('当前环境不支持文件选择');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error('文件选择失败:', error);
|
|
78
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '文件选择失败');
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import Taro from '@tarojs/taro';
|
|
3
|
+
export default (function (context) {
|
|
4
|
+
var _inputs$chooseMedia;
|
|
5
|
+
var data = context.data;
|
|
6
|
+
var inputs = context.inputs;
|
|
7
|
+
var outputs = context.outputs;
|
|
8
|
+
(_inputs$chooseMedia = inputs.chooseMedia) === null || _inputs$chooseMedia === void 0 || _inputs$chooseMedia.call(inputs, function (val) {
|
|
9
|
+
try {
|
|
10
|
+
var _config = {
|
|
11
|
+
mediaType: (val === null || val === void 0 ? void 0 : val.mediaType) || data.mediaType || ['image', 'video'],
|
|
12
|
+
sourceType: (val === null || val === void 0 ? void 0 : val.sourceType) || data.sourceType || ['album', 'camera'],
|
|
13
|
+
count: (val === null || val === void 0 ? void 0 : val.count) || data.count || 9,
|
|
14
|
+
sizeType: (val === null || val === void 0 ? void 0 : val.sizeType) || data.sizeType || ['original', 'compressed'],
|
|
15
|
+
maxDuration: (val === null || val === void 0 ? void 0 : val.maxDuration) || data.maxDuration || 10,
|
|
16
|
+
camera: (val === null || val === void 0 ? void 0 : val.camera) || data.camera
|
|
17
|
+
};
|
|
18
|
+
Taro.chooseMedia(_objectSpread(_objectSpread({}, _config), {}, {
|
|
19
|
+
success: function success(res) {
|
|
20
|
+
var _res$tempFiles;
|
|
21
|
+
outputs.onSuccess({
|
|
22
|
+
type: res.type,
|
|
23
|
+
tempFiles: res.tempFiles,
|
|
24
|
+
tempFilePaths: res.tempFilePaths || ((_res$tempFiles = res.tempFiles) === null || _res$tempFiles === void 0 ? void 0 : _res$tempFiles.map(function (file) {
|
|
25
|
+
return file.tempFilePath;
|
|
26
|
+
}))
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
fail: function fail(err) {
|
|
30
|
+
outputs.onFail(err.errMsg || '选择媒体失败');
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error('选择媒体失败:', error);
|
|
35
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '选择媒体失败');
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import Taro from '@tarojs/taro';
|
|
3
|
+
export default (function (context) {
|
|
4
|
+
var _inputs$request;
|
|
5
|
+
var data = context.data;
|
|
6
|
+
var inputs = context.inputs;
|
|
7
|
+
var outputs = context.outputs;
|
|
8
|
+
(_inputs$request = inputs.request) === null || _inputs$request === void 0 || _inputs$request.call(inputs, function (val) {
|
|
9
|
+
try {
|
|
10
|
+
var _config = {
|
|
11
|
+
method: (val === null || val === void 0 ? void 0 : val.method) || data.method || 'GET',
|
|
12
|
+
url: (val === null || val === void 0 ? void 0 : val.url) || data.url,
|
|
13
|
+
header: (val === null || val === void 0 ? void 0 : val.headers) || data.headers || {},
|
|
14
|
+
data: (val === null || val === void 0 ? void 0 : val.data) || data.data,
|
|
15
|
+
timeout: (val === null || val === void 0 ? void 0 : val.timeout) || data.timeout,
|
|
16
|
+
dataType: (val === null || val === void 0 ? void 0 : val.dataType) || data.dataType || 'json',
|
|
17
|
+
responseType: (val === null || val === void 0 ? void 0 : val.responseType) || data.responseType || 'text'
|
|
18
|
+
};
|
|
19
|
+
if (!_config.url) {
|
|
20
|
+
outputs.onFail('请求URL不能为空');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// 检查URL格式
|
|
25
|
+
if (!/^https?:\/\//.test(_config.url)) {
|
|
26
|
+
outputs.onFail('URL格式不正确,请以http://或https://开头');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
Taro.request(_objectSpread(_objectSpread({}, _config), {}, {
|
|
30
|
+
success: function success(res) {
|
|
31
|
+
if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
32
|
+
outputs.onSuccess({
|
|
33
|
+
data: res.data,
|
|
34
|
+
statusCode: res.statusCode,
|
|
35
|
+
header: res.header
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
outputs.onFail({
|
|
39
|
+
message: "\u8BF7\u6C42\u5931\u8D25: ".concat(res.statusCode),
|
|
40
|
+
statusCode: res.statusCode,
|
|
41
|
+
data: res.data
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
fail: function fail(err) {
|
|
46
|
+
outputs.onFail({
|
|
47
|
+
message: err.errMsg || '网络请求失败',
|
|
48
|
+
error: err
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('网络请求失败:', error);
|
|
54
|
+
outputs.onFail({
|
|
55
|
+
message: (error === null || error === void 0 ? void 0 : error.message) || '网络请求失败',
|
|
56
|
+
error: error
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
// 全局请求头存储
|
|
3
|
+
var globalHeaders = {};
|
|
4
|
+
export default (function (context) {
|
|
5
|
+
var _inputs$setGlobalHead, _inputs$getGlobalHead, _inputs$clearGlobalHe;
|
|
6
|
+
var data = context.data;
|
|
7
|
+
var inputs = context.inputs;
|
|
8
|
+
var outputs = context.outputs;
|
|
9
|
+
(_inputs$setGlobalHead = inputs.setGlobalHeaders) === null || _inputs$setGlobalHead === void 0 || _inputs$setGlobalHead.call(inputs, function (val) {
|
|
10
|
+
try {
|
|
11
|
+
var headers = (val === null || val === void 0 ? void 0 : val.headers) || data.headers || {};
|
|
12
|
+
if (Object.keys(headers).length === 0) {
|
|
13
|
+
outputs.onFail('请求头不能为空');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 合并到全局请求头
|
|
18
|
+
globalHeaders = _objectSpread(_objectSpread({}, globalHeaders), headers);
|
|
19
|
+
outputs.onSuccess({
|
|
20
|
+
globalHeaders: _objectSpread({}, globalHeaders),
|
|
21
|
+
addedHeaders: headers
|
|
22
|
+
});
|
|
23
|
+
} catch (error) {
|
|
24
|
+
console.error('设置全局请求头失败:', error);
|
|
25
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '设置全局请求头失败');
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
(_inputs$getGlobalHead = inputs.getGlobalHeaders) === null || _inputs$getGlobalHead === void 0 || _inputs$getGlobalHead.call(inputs, function () {
|
|
29
|
+
try {
|
|
30
|
+
outputs.onSuccess({
|
|
31
|
+
globalHeaders: _objectSpread({}, globalHeaders)
|
|
32
|
+
});
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error('获取全局请求头失败:', error);
|
|
35
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '获取全局请求头失败');
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
(_inputs$clearGlobalHe = inputs.clearGlobalHeaders) === null || _inputs$clearGlobalHe === void 0 || _inputs$clearGlobalHe.call(inputs, function () {
|
|
39
|
+
try {
|
|
40
|
+
var oldHeaders = _objectSpread({}, globalHeaders);
|
|
41
|
+
globalHeaders = {};
|
|
42
|
+
outputs.onSuccess({
|
|
43
|
+
clearedHeaders: oldHeaders,
|
|
44
|
+
globalHeaders: {}
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
console.error('清除全局请求头失败:', error);
|
|
48
|
+
outputs.onFail((error === null || error === void 0 ? void 0 : error.message) || '清除全局请求头失败');
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// 导出一个工具函数,用于在其他组件中获取全局请求头
|
|
54
|
+
export var getGlobalHeaders = function getGlobalHeaders() {
|
|
55
|
+
return _objectSpread({}, globalHeaders);
|
|
56
|
+
};
|