@tarojs/plugin-platform-harmony-ets 4.0.0-beta.7 → 4.0.0-beta.70
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/apis/base/system.ts +73 -20
- package/dist/apis/canvas/index.ts +10 -1
- package/dist/apis/device/clipboard.ts +9 -1
- package/dist/apis/framework/index.ts +1 -5
- package/dist/apis/index.ts +27 -17
- package/dist/apis/network/request.ts +5 -5
- package/dist/apis/route/index.ts +15 -0
- package/dist/apis/storage/index.ts +146 -78
- package/dist/apis/ui/animation/animation.ts +71 -29
- package/dist/apis/ui/background.ts +2 -1
- package/dist/apis/ui/interaction/index.ts +42 -59
- package/dist/apis/ui/navigation-bar/index.ts +1 -1
- package/dist/apis/ui/scroll/index.ts +1 -1
- package/dist/apis/utils/index.ts +1 -1
- package/dist/apis/wxml/IntersectionObserver.ts +18 -10
- package/dist/apis/wxml/index.ts +2 -0
- package/dist/apis/wxml/selectorQuery.ts +24 -11
- package/dist/components-harmony-ets/button.ets +48 -34
- package/dist/components-harmony-ets/canvas.ets +51 -0
- package/dist/components-harmony-ets/checkbox.ets +69 -61
- package/dist/components-harmony-ets/form.ets +51 -29
- package/dist/components-harmony-ets/icon.ets +31 -19
- package/dist/components-harmony-ets/image.ets +34 -14
- package/dist/components-harmony-ets/index.ets +92 -0
- package/dist/components-harmony-ets/innerHtml.ets +11 -6
- package/dist/components-harmony-ets/input.ets +45 -41
- package/dist/components-harmony-ets/label.ets +69 -42
- package/dist/components-harmony-ets/listView.ets +26 -0
- package/dist/components-harmony-ets/movableArea.ets +126 -0
- package/dist/components-harmony-ets/movableView.ets +77 -0
- package/dist/components-harmony-ets/navigationBar.ets +65 -0
- package/dist/components-harmony-ets/pageMeta.ets +94 -0
- package/dist/components-harmony-ets/picker.ets +42 -38
- package/dist/components-harmony-ets/progress.ets +52 -0
- package/dist/components-harmony-ets/pseudo.ets +80 -0
- package/dist/components-harmony-ets/radio.ets +71 -64
- package/dist/components-harmony-ets/richText.ets +14 -30
- package/dist/components-harmony-ets/scrollList.ets +94 -0
- package/dist/components-harmony-ets/scrollView.ets +61 -57
- package/dist/components-harmony-ets/slider.ets +15 -14
- package/dist/components-harmony-ets/stickySection.ets +42 -0
- package/dist/components-harmony-ets/style.ets +372 -130
- package/dist/components-harmony-ets/swiper.ets +61 -20
- package/dist/components-harmony-ets/switch.ets +30 -28
- package/dist/components-harmony-ets/{index.ts → tag.ts} +6 -0
- package/dist/components-harmony-ets/text.ets +135 -49
- package/dist/components-harmony-ets/textArea.ets +47 -35
- package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
- package/dist/components-harmony-ets/utils/DynamicCenter.ts +1 -1
- package/dist/components-harmony-ets/utils/flexManager.ets +47 -19
- package/dist/components-harmony-ets/utils/helper.ets +18 -5
- package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
- package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
- package/dist/components-harmony-ets/utils/index.ts +54 -50
- package/dist/components-harmony-ets/utils/styles.ets +170 -93
- package/dist/components-harmony-ets/video.ets +34 -21
- package/dist/components-harmony-ets/view.ets +63 -52
- package/dist/components-harmony-ets/webView.ets +40 -34
- package/dist/index.d.ts +152 -0
- package/dist/index.js +85 -42
- package/dist/index.js.map +1 -1
- package/dist/runtime-ets/bom/document.ts +6 -4
- package/dist/runtime-ets/bom/getComputedStyle.ts +2 -2
- package/dist/runtime-ets/bom/window.ts +7 -0
- package/dist/runtime-ets/current.ts +3 -0
- package/dist/runtime-ets/dom/bind.ts +28 -12
- package/dist/runtime-ets/dom/class-list.ts +2 -2
- package/dist/runtime-ets/dom/cssNesting.ts +409 -0
- package/dist/runtime-ets/dom/cssStyleDeclaration.ts +28 -42
- package/dist/runtime-ets/dom/document.ts +22 -8
- package/dist/runtime-ets/dom/element/canvas.ts +136 -0
- package/dist/runtime-ets/dom/element/element.ts +334 -58
- package/dist/runtime-ets/dom/element/form.ts +23 -26
- package/dist/runtime-ets/dom/element/index.ts +25 -2
- package/dist/runtime-ets/dom/element/movableArea.ts +11 -0
- package/dist/runtime-ets/dom/element/movableView.ts +209 -0
- package/dist/runtime-ets/dom/element/normal.ts +35 -8
- package/dist/runtime-ets/dom/element/progress.ts +11 -0
- package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
- package/dist/runtime-ets/dom/element/text.ts +1 -8
- package/dist/runtime-ets/dom/element/video.ts +5 -4
- package/dist/runtime-ets/dom/element/webView.ts +12 -5
- package/dist/runtime-ets/dom/event.ts +2 -4
- package/dist/runtime-ets/dom/eventTarget.ts +2 -3
- package/dist/runtime-ets/dom/node.ts +49 -28
- package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +416 -235
- package/dist/runtime-ets/dom/stylesheet/index.ts +29 -311
- package/dist/runtime-ets/dom/stylesheet/type.ts +49 -9
- package/dist/runtime-ets/dom/stylesheet/util.ts +33 -27
- package/dist/runtime-ets/index.ts +2 -1
- package/dist/runtime-ets/interface/event.ts +1 -1
- package/dist/runtime-ets/utils/index.ts +69 -13
- package/dist/runtime-ets/utils/info.ts +2 -2
- package/dist/runtime-framework/react/app.ts +7 -2
- package/dist/runtime-framework/react/hooks.ts +0 -1
- package/dist/runtime-framework/react/index.ts +0 -2
- package/dist/runtime-framework/react/native-page.ts +32 -14
- package/dist/runtime-framework/react/page.ts +3 -8
- package/dist/runtime-framework/solid/app.ts +25 -45
- package/dist/runtime-framework/solid/connect.ts +21 -3
- package/dist/runtime-framework/solid/hooks.ts +16 -11
- package/dist/runtime-framework/solid/index.ts +6 -2
- package/dist/runtime-framework/solid/page.ts +84 -30
- package/dist/runtime-framework/solid/reconciler/props.ts +70 -25
- package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
- package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
- package/dist/runtime-framework/solid/utils/index.ts +0 -2
- package/dist/runtime-utils.d.ts +827 -0
- package/dist/runtime-utils.js +425 -200
- package/dist/runtime-utils.js.map +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +425 -200
- package/dist/runtime.js.map +1 -1
- package/index.js +3 -1
- package/package.json +13 -13
- package/static/media/cancel.svg +1 -1
- package/static/media/circle.svg +1 -1
- package/static/media/clear.svg +1 -1
- package/static/media/download.svg +1 -1
- package/static/media/info.svg +1 -1
- package/static/media/info_circle.svg +1 -1
- package/static/media/search.svg +1 -1
- package/static/media/success.svg +1 -1
- package/static/media/success_no_circle.svg +1 -1
- package/static/media/warn.svg +1 -1
- package/types/harmony.d.ts +4 -0
- package/types/index.d.ts +4 -0
- /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AREA_CHANGE_EVENT_NAME, eventHandler, getComponentEventCallback, VISIBLE_CHANGE_EVENT_NAME, createTaroEvent } from '@tarojs/runtime'
|
|
2
2
|
|
|
3
3
|
import commonStyleModify from './style'
|
|
4
|
-
import {
|
|
4
|
+
import { shouldBindEvent, getNodeThresholds } from './utils/helper'
|
|
5
5
|
|
|
6
|
-
import type { TaroAny, TaroWebViewElement,
|
|
6
|
+
import type { TaroAny, TaroWebViewElement, TaroEvent } from '@tarojs/runtime'
|
|
7
7
|
|
|
8
8
|
interface IPageLoad {
|
|
9
9
|
url: string
|
|
@@ -14,37 +14,43 @@ interface IError {
|
|
|
14
14
|
error: WebResourceError
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
@
|
|
18
|
-
export default
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
@Component
|
|
18
|
+
export default struct TaroWebView {
|
|
19
|
+
@Builder customBuilder() {}
|
|
20
|
+
@BuilderParam createLazyChildren: (node: TaroWebViewElement) => void = this.customBuilder
|
|
21
|
+
@ObjectLink node: TaroWebViewElement
|
|
22
|
+
|
|
23
|
+
build () {
|
|
24
|
+
Web({ src: this.node._attrs.src, controller: this.node.controller })
|
|
25
|
+
.attributeModifier(commonStyleModify.setNode(this.node))
|
|
26
|
+
.onPageEnd((e: IPageLoad) => {
|
|
27
|
+
// 1. 创建消息端口
|
|
28
|
+
this.node.ports = this.node.controller.createWebMessagePorts(true)
|
|
29
|
+
// 2. 发送端口1到HTML5
|
|
30
|
+
this.node.controller.postMessage('init_web_messageport', [this.node.ports[1]], '*');
|
|
31
|
+
// 3. 保存端口0到本地
|
|
32
|
+
this.node.nativePort = this.node.ports[0]
|
|
33
|
+
// 4. 设置回调函数
|
|
34
|
+
this.node.nativePort.onMessageEventExt((result) => {
|
|
35
|
+
const message = this.node.handleMessageFromWeb(result)
|
|
36
|
+
const messageEvent: TaroEvent = createTaroEvent('message', { detail: { data: message } }, this.node)
|
|
37
|
+
|
|
38
|
+
eventHandler(messageEvent, 'message', this.node)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const onLoadEvent: TaroEvent = createTaroEvent('load', { detail: { src: this.node._attrs.src } }, this.node)
|
|
42
|
+
|
|
43
|
+
eventHandler(onLoadEvent, 'load', this.node)
|
|
34
44
|
})
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.onAreaChange(getComponentEventCallback(node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
|
|
47
|
-
node._nodeInfo.areaInfo = res[1]
|
|
48
|
-
}))
|
|
49
|
-
.onVisibleAreaChange(getNodeThresholds(node) || [0.0, 1.0], getComponentEventCallback(node, VISIBLE_CHANGE_EVENT_NAME))
|
|
45
|
+
.onErrorReceive(shouldBindEvent((e: IError) => {
|
|
46
|
+
const event: TaroEvent = createTaroEvent('error', { detail: { url: this.node._attrs.src, fullUrl: e.request.getRequestUrl() } }, this.node)
|
|
47
|
+
|
|
48
|
+
eventHandler(event, 'error', this.node)
|
|
49
|
+
}, this.node, ['error']))
|
|
50
|
+
.onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', this.node), this.node, ['click']))
|
|
51
|
+
.onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
|
|
52
|
+
this.node._nodeInfo.areaInfo = res[1]
|
|
53
|
+
}))
|
|
54
|
+
.onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
|
|
55
|
+
}
|
|
50
56
|
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { IFileType, TConfig, TaroPlatform, IPluginContext, TaroPlatformBase } from "@tarojs/service";
|
|
3
|
+
import { PLATFORM_TYPE } from "@tarojs/shared";
|
|
4
|
+
declare abstract class TaroPlatformHarmony<T extends TConfig = TConfig> extends TaroPlatform<T> {
|
|
5
|
+
platformType: PLATFORM_TYPE;
|
|
6
|
+
globalObject: string;
|
|
7
|
+
abstract fileType: IFileType;
|
|
8
|
+
abstract useETS: boolean;
|
|
9
|
+
abstract useJSON5: boolean;
|
|
10
|
+
taroComponentsPath: string;
|
|
11
|
+
/**
|
|
12
|
+
* 1. 清空 dist 文件夹
|
|
13
|
+
* 2. 输出编译提示
|
|
14
|
+
*/
|
|
15
|
+
private setup;
|
|
16
|
+
private setupHarmonyApp;
|
|
17
|
+
protected printDevelopmentTip(): void;
|
|
18
|
+
/**
|
|
19
|
+
* 返回当前项目内的 runner 包
|
|
20
|
+
*/
|
|
21
|
+
protected getRunner(): Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* 准备 runner 参数
|
|
24
|
+
* @param extraOptions 需要额外合入 Options 的配置项
|
|
25
|
+
*/
|
|
26
|
+
protected getOptions(extraOptions?: {}): any;
|
|
27
|
+
/**
|
|
28
|
+
* 调用 runner 开始编译
|
|
29
|
+
* @param extraOptions 需要额外传入 runner 的配置项
|
|
30
|
+
*/
|
|
31
|
+
private build;
|
|
32
|
+
private buildHarmonyApp;
|
|
33
|
+
/**
|
|
34
|
+
* 调用 runner 开启编译
|
|
35
|
+
*/
|
|
36
|
+
start(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
declare class Harmony extends TaroPlatformHarmony {
|
|
39
|
+
#private;
|
|
40
|
+
platform: string;
|
|
41
|
+
globalObject: string;
|
|
42
|
+
fileType: {
|
|
43
|
+
templ: string;
|
|
44
|
+
style: string;
|
|
45
|
+
config: string;
|
|
46
|
+
script: string;
|
|
47
|
+
};
|
|
48
|
+
useETS: boolean;
|
|
49
|
+
useJSON5: boolean;
|
|
50
|
+
runtimePath: string[] | string;
|
|
51
|
+
taroComponentsPath: string;
|
|
52
|
+
apiEntryList: RegExp[];
|
|
53
|
+
constructor(ctx: IPluginContext, config: TConfig);
|
|
54
|
+
get framework(): "solid" | "vue3" | "react" | "preact" | "nerv" | "vue";
|
|
55
|
+
get aliasFramework(): string;
|
|
56
|
+
get apiLibrary(): string;
|
|
57
|
+
get apiEntry(): RegExp[];
|
|
58
|
+
get componentLibrary(): string;
|
|
59
|
+
get runtimeLibrary(): string;
|
|
60
|
+
get runtimeFrameworkLibrary(): string;
|
|
61
|
+
get defineConstants(): Record<string, string> | undefined;
|
|
62
|
+
extensions: string[];
|
|
63
|
+
excludeLibraries: (string | RegExp)[];
|
|
64
|
+
externalDeps: [
|
|
65
|
+
string,
|
|
66
|
+
RegExp,
|
|
67
|
+
string?
|
|
68
|
+
][];
|
|
69
|
+
harmonyScope: RegExp[];
|
|
70
|
+
indexOfLibraries(lib: string): number;
|
|
71
|
+
removeFromLibraries(lib: string): void;
|
|
72
|
+
moveLibraries(lib: string, target?: string, basedir?: string, sync?: boolean): void;
|
|
73
|
+
replaceDefineValue(code: string, define: Record<string, string>, ext?: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* 修改 Vite 配置
|
|
76
|
+
*/
|
|
77
|
+
modifyViteConfig(): void;
|
|
78
|
+
handleResourceEmit(outDir: string, basedir?: string): void;
|
|
79
|
+
}
|
|
80
|
+
declare module HarmonyWrapper {
|
|
81
|
+
export { Harmony };
|
|
82
|
+
}
|
|
83
|
+
import HarmonyOS_ArkTS = HarmonyWrapper.Harmony;
|
|
84
|
+
declare class Harmony$0 extends TaroPlatformBase {
|
|
85
|
+
platform: string;
|
|
86
|
+
globalObject: string;
|
|
87
|
+
runtimePath: string;
|
|
88
|
+
taroComponentsPath: string;
|
|
89
|
+
fileType: {
|
|
90
|
+
templ: string;
|
|
91
|
+
style: string;
|
|
92
|
+
config: string;
|
|
93
|
+
script: string;
|
|
94
|
+
};
|
|
95
|
+
template: any;
|
|
96
|
+
/**
|
|
97
|
+
* 1. setupTransaction - init
|
|
98
|
+
* 2. setup
|
|
99
|
+
* 3. setupTransaction - close
|
|
100
|
+
* 4. buildTransaction - init
|
|
101
|
+
* 5. build
|
|
102
|
+
* 6. buildTransaction - close
|
|
103
|
+
*/
|
|
104
|
+
constructor(ctx: any, config: any);
|
|
105
|
+
/**
|
|
106
|
+
* 增加组件或修改组件属性
|
|
107
|
+
*/
|
|
108
|
+
modifyComponents(): void;
|
|
109
|
+
/**
|
|
110
|
+
* 不需要转 rpx
|
|
111
|
+
*/
|
|
112
|
+
modifyPostcssConfigs(config: Record<string, any>): void;
|
|
113
|
+
/**
|
|
114
|
+
* 模板自定义组件 js
|
|
115
|
+
* 等鸿蒙支持 template 后需要重构
|
|
116
|
+
*/
|
|
117
|
+
addEntry(): void;
|
|
118
|
+
/**
|
|
119
|
+
* 把 app、pages、自定义组件的 js 改造为鸿蒙的 export default 导出形式
|
|
120
|
+
*/
|
|
121
|
+
modifyTaroExport(): void;
|
|
122
|
+
/**
|
|
123
|
+
* 修改最终的编译产物
|
|
124
|
+
* 1. 生成模板自定义组件的 xml、css 文件
|
|
125
|
+
* 2. 删除多余的文件
|
|
126
|
+
* 3. 把 components-harmony 中被使用到的组件移动到输出目录
|
|
127
|
+
*/
|
|
128
|
+
modifyBuildAssets(ctx: any, config: any): void;
|
|
129
|
+
modifyWebpackConfig(): void;
|
|
130
|
+
modifyHarmonyConfig(pages: any, { projectPath, hapName, name }: {
|
|
131
|
+
projectPath: any;
|
|
132
|
+
hapName: any;
|
|
133
|
+
name: any;
|
|
134
|
+
}): void;
|
|
135
|
+
modifyHostPackage({ projectPath, hapName }: {
|
|
136
|
+
projectPath: any;
|
|
137
|
+
hapName?: string | undefined;
|
|
138
|
+
}): Promise<any>;
|
|
139
|
+
getChunkEntryModule(compilation: any, chunk: any, compiler?: string): any;
|
|
140
|
+
checkMetaType(entryModule: any): boolean;
|
|
141
|
+
isHarmonyRequest(request: string): boolean;
|
|
142
|
+
}
|
|
143
|
+
declare module HarmonyWrapper {
|
|
144
|
+
export { Harmony$0 as Harmony };
|
|
145
|
+
}
|
|
146
|
+
import HarmonyOS_JSUI = HarmonyWrapper.Harmony;
|
|
147
|
+
interface IOptions {
|
|
148
|
+
disableArkTS?: boolean;
|
|
149
|
+
useConfigName?: string;
|
|
150
|
+
}
|
|
151
|
+
declare const _default: (ctx: IPluginContext, options?: IOptions) => void;
|
|
152
|
+
export { _default as default, HarmonyOS_ArkTS, HarmonyOS_JSUI, IOptions };
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var helper = require('@tarojs/helper');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var runnerUtils = require('@tarojs/runner-utils');
|
|
8
|
-
var shared = require('@tarojs/shared');
|
|
9
7
|
var service = require('@tarojs/service');
|
|
10
8
|
var _package = require('@tarojs/service/dist/utils/package');
|
|
9
|
+
var shared = require('@tarojs/shared');
|
|
11
10
|
var webpackSources = require('webpack-sources');
|
|
12
11
|
var template = require('@tarojs/shared/dist/template');
|
|
13
12
|
|
|
@@ -303,6 +302,9 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
303
302
|
this.useJSON5 = true;
|
|
304
303
|
this.runtimePath = [];
|
|
305
304
|
this.taroComponentsPath = `${PACKAGE_NAME}/dist/components-harmony-ets`;
|
|
305
|
+
this.apiEntryList = [
|
|
306
|
+
/(@tarojs[\\/]plugin-platform-harmony-ets|taro-platform-harmony)[\\/]dist[\\/]apis[\\/]index\.ts/,
|
|
307
|
+
];
|
|
306
308
|
_Harmony_defineConstants.set(this, {});
|
|
307
309
|
this.extensions = ['.js', '.jsx', '.ts', '.tsx', '.cjs', '.mjs', '.mts', '.vue', '.ets', '.d.ts'];
|
|
308
310
|
this.excludeLibraries = [];
|
|
@@ -317,14 +319,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
317
319
|
['react', /^react$|react[\\/]cjs/],
|
|
318
320
|
['react/jsx-runtime', /^react[\\/]jsx-runtime$/], // Note: React 环境下自动注入,避免重复
|
|
319
321
|
];
|
|
322
|
+
this.harmonyScope = [...HARMONY_SCOPES];
|
|
323
|
+
const that = this;
|
|
320
324
|
this.setupTransaction.addWrapper({
|
|
321
325
|
close() {
|
|
322
|
-
|
|
326
|
+
that.modifyViteConfig();
|
|
323
327
|
},
|
|
324
328
|
});
|
|
325
329
|
ctx.onBuildFinish(() => {
|
|
326
330
|
const outDir = path__namespace.resolve(process.cwd(), config.outputRoot);
|
|
327
|
-
|
|
331
|
+
that.handleResourceEmit(outDir);
|
|
328
332
|
});
|
|
329
333
|
}
|
|
330
334
|
get framework() {
|
|
@@ -336,6 +340,9 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
336
340
|
get apiLibrary() {
|
|
337
341
|
return path__namespace.resolve(__dirname, './apis');
|
|
338
342
|
}
|
|
343
|
+
get apiEntry() {
|
|
344
|
+
return this.apiEntryList;
|
|
345
|
+
}
|
|
339
346
|
get componentLibrary() {
|
|
340
347
|
return path__namespace.resolve(__dirname, './components-harmony-ets');
|
|
341
348
|
}
|
|
@@ -372,8 +379,8 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
372
379
|
return;
|
|
373
380
|
if (this.excludeLibraries.some(e => typeof e === 'string' ? e === lib : e.test(lib)))
|
|
374
381
|
return;
|
|
382
|
+
const { outputRoot, chorePackagePrefix } = this.ctx.runOpts.config;
|
|
375
383
|
if (sync) {
|
|
376
|
-
const { outputRoot } = this.ctx.runOpts.config;
|
|
377
384
|
const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES);
|
|
378
385
|
// FIXME 不支持 alias 配置
|
|
379
386
|
const libName = lib;
|
|
@@ -421,9 +428,10 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
421
428
|
}
|
|
422
429
|
if (ext) {
|
|
423
430
|
const code = helper.fs.readFileSync(lib, { encoding: 'utf8' });
|
|
424
|
-
if ((/(?:import\s|from\s|require\()['"]([\\/.][^'"\s]+)['"]\)?/g.test(code)
|
|
425
|
-
|
|
426
|
-
|
|
431
|
+
if ((/(?:import\s|from\s|require\()['"]([\\/.][^'"\s]+)['"]\)?/g.test(code) ||
|
|
432
|
+
/\/{3}\s<reference\spath=['"][^'"\s]+['"]\s\/>/g.test(code)) &&
|
|
433
|
+
`${libName}${path__namespace.extname(libDir)}` !== libDir) {
|
|
434
|
+
// Note: 文件包含包内引用的依赖
|
|
427
435
|
const pkgPath = path__namespace.relative(libName, libDir);
|
|
428
436
|
if (new RegExp(`^index(${this.extensions.map(e => e.replace('.', '\\.')).join('|')})$`).test(pkgPath)) {
|
|
429
437
|
// Note: 入口为 index 场景
|
|
@@ -474,16 +482,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
474
482
|
}
|
|
475
483
|
else if (stat.isFile()) {
|
|
476
484
|
let code = helper.fs.readFileSync(lib, { encoding: 'utf8' });
|
|
477
|
-
|
|
478
|
-
if ([/(@tarojs[\\/]plugin-platform-harmony-ets|taro-platform-harmony)[\\/]dist[\\/]apis[\\/]index\.ts/].some(e => e.test(lib))) {
|
|
485
|
+
if (this.apiEntry.some(e => e.test(lib))) {
|
|
479
486
|
code = apiLoader(code);
|
|
480
487
|
}
|
|
481
488
|
if (this.extensions.includes(path__namespace.extname(lib))) {
|
|
482
|
-
|
|
489
|
+
// Note: 查询 externals 内的依赖,并将它们添加到 externalDeps 中
|
|
490
|
+
code = code.replace(/(?:import\s|from\s|require\()['"]([^\\/.][^'"\s]+)['"]\)?/g, (src, p1) => {
|
|
483
491
|
const { outputRoot } = this.ctx.runOpts.config;
|
|
484
492
|
const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES, p1);
|
|
485
493
|
const relativePath = parseRelativePath(path__namespace.dirname(target), targetPath);
|
|
486
|
-
if (
|
|
494
|
+
if (this.harmonyScope.every(e => !e.test(p1))) {
|
|
487
495
|
if (this.indexOfLibraries(p1) === -1 && !/\.(d\.ts|flow\.js)$/.test(lib)) {
|
|
488
496
|
this.externalDeps.push([p1, new RegExp(`^${p1.replace(/([-\\/$])/g, '\\$1')}$`)]);
|
|
489
497
|
this.moveLibraries(p1, targetPath, path__namespace.dirname(lib), true);
|
|
@@ -492,18 +500,29 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
|
|
|
492
500
|
}
|
|
493
501
|
return src;
|
|
494
502
|
});
|
|
495
|
-
const define = Object.assign({}, this.defineConstants)
|
|
503
|
+
const define = Object.assign(Object.assign({}, this.defineConstants), {
|
|
504
|
+
// Note: React 开发环境可能调用 stack 可能导致 appWrapper 实例变更
|
|
505
|
+
'ReactDebugCurrentFrame.getCurrentStack': 'ReactDebugCurrentFrame.getCurrentStack$' });
|
|
496
506
|
if ([/(@tarojs[\\/]runtime|taro-runtime)[\\/]dist/].some(e => e.test(lib))) {
|
|
497
507
|
define.global = 'globalThis';
|
|
498
508
|
}
|
|
499
|
-
code = this.replaceDefineValue(code, define);
|
|
500
509
|
const ext = path__namespace.extname(target);
|
|
510
|
+
if (![/d\.e?tsx?$/, /\.(json|map|md)$/].some(e => e.test(target))) {
|
|
511
|
+
code = this.replaceDefineValue(code, define, ext);
|
|
512
|
+
}
|
|
501
513
|
if (['.ts'].includes(ext)) {
|
|
502
514
|
code = '// @ts-nocheck\n' + code;
|
|
503
515
|
}
|
|
516
|
+
// 处理嵌套样式的编译,需要针对ReactElement进行props操作,dev模式下会Object.freeze,所以需要在开发模式下注入Object.freeze来覆盖解锁
|
|
517
|
+
// 处理的方法再taro-platform-harmony/src/runtime-ets/dom/cssNesting: ele.props.style = declaration
|
|
518
|
+
if (/react\/jsx-runtime/.test(lib) && process.env.NODE_ENV === 'development') {
|
|
519
|
+
code = 'Object.freeze = (obj) => obj \n' + code;
|
|
520
|
+
}
|
|
504
521
|
}
|
|
505
|
-
|
|
506
|
-
|
|
522
|
+
// Note: 传入 chorePackagePrefix 时,不生成核心依赖库
|
|
523
|
+
if (!chorePackagePrefix) {
|
|
524
|
+
if (/tarojs[\\/]taro[\\/]types[\\/]index.d.ts/.test(target)) {
|
|
525
|
+
code = `/// <reference path="global.d.ts" />
|
|
507
526
|
|
|
508
527
|
/// <reference path="taro.api.d.ts" />
|
|
509
528
|
/// <reference path="taro.component.d.ts" />
|
|
@@ -523,14 +542,15 @@ declare global {
|
|
|
523
542
|
const defineAppConfig: (config: Taro.Config) => Taro.Config
|
|
524
543
|
const definePageConfig: (config: Taro.Config) => Taro.Config
|
|
525
544
|
}`;
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
545
|
+
}
|
|
546
|
+
try {
|
|
547
|
+
const targetPath = target.replace(new RegExp(`\\b${helper.NODE_MODULES}\\b`), 'npm');
|
|
548
|
+
helper.fs.ensureDirSync(path__namespace.dirname(targetPath));
|
|
549
|
+
helper.fs.writeFileSync(targetPath, code);
|
|
550
|
+
}
|
|
551
|
+
catch (e) {
|
|
552
|
+
console.error(`[taro-arkts] inject ${lib} to ${target} failed`, e);
|
|
553
|
+
}
|
|
534
554
|
}
|
|
535
555
|
}
|
|
536
556
|
else if (stat.isSymbolicLink()) {
|
|
@@ -538,9 +558,13 @@ declare global {
|
|
|
538
558
|
this.moveLibraries(realPath, target, basedir);
|
|
539
559
|
}
|
|
540
560
|
}
|
|
541
|
-
replaceDefineValue(code, define) {
|
|
561
|
+
replaceDefineValue(code, define, ext = '.js') {
|
|
542
562
|
Object.keys(define).forEach(key => {
|
|
543
|
-
|
|
563
|
+
let value = define[key];
|
|
564
|
+
if (/^['"`].*['"`]$/.test(value) && ['.ts', '.tsx', '.ets'].includes(ext)) {
|
|
565
|
+
value = `(${value} as string)`;
|
|
566
|
+
}
|
|
567
|
+
code = code.replace(new RegExp(`\\b${key}\\b`, 'g'), value);
|
|
544
568
|
});
|
|
545
569
|
return code;
|
|
546
570
|
}
|
|
@@ -552,15 +576,15 @@ declare global {
|
|
|
552
576
|
const that = this;
|
|
553
577
|
const { appPath } = that.ctx.paths;
|
|
554
578
|
const { config } = that.ctx.runOpts;
|
|
555
|
-
const { outputRoot } = config;
|
|
579
|
+
const { outputRoot, ohPackage = {}, chorePackagePrefix } = config;
|
|
556
580
|
if (!that.framework.includes('vue')) {
|
|
557
581
|
that.excludeLibraries.push(/\bvue\b/);
|
|
558
582
|
}
|
|
559
583
|
// @ts-ignore
|
|
560
584
|
if (that.framework === 'solid') {
|
|
561
585
|
that.externalDeps.push([
|
|
562
|
-
'@tarojs/plugin-framework-react/dist/
|
|
563
|
-
/^@tarojs\/plugin-framework-react\/dist\/
|
|
586
|
+
'@tarojs/plugin-framework-react/dist/reconciler',
|
|
587
|
+
/^@tarojs\/plugin-framework-react\/dist\/reconciler$/,
|
|
564
588
|
path__namespace.join(this.runtimeFrameworkLibrary, 'reconciler')
|
|
565
589
|
]);
|
|
566
590
|
that.externalDeps.push([
|
|
@@ -568,11 +592,29 @@ declare global {
|
|
|
568
592
|
/^solid-js\/universal$/,
|
|
569
593
|
]);
|
|
570
594
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
595
|
+
const externals = Object.keys(ohPackage.dependencies || []).concat(Object.keys(ohPackage.devDependencies || []));
|
|
596
|
+
function modifyResolveId({ source = '', name = 'modifyResolveId' }) {
|
|
597
|
+
if (externals.includes(source)) {
|
|
598
|
+
return {
|
|
599
|
+
external: true,
|
|
600
|
+
id: source,
|
|
601
|
+
resolvedBy: name,
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
else if (source.includes('css_variables')) {
|
|
605
|
+
return {
|
|
606
|
+
external: true,
|
|
607
|
+
id: path__namespace.join(outputRoot, 'css_variables'),
|
|
608
|
+
moduleSideEffects: 'no-treeshake',
|
|
609
|
+
resolvedBy: name,
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
if (chorePackagePrefix && that.indexOfLibraries(source) > -1) {
|
|
613
|
+
return {
|
|
614
|
+
external: true,
|
|
615
|
+
id: path__namespace.join(chorePackagePrefix, source),
|
|
616
|
+
resolvedBy: name,
|
|
617
|
+
};
|
|
576
618
|
}
|
|
577
619
|
// Note: 映射 Taro 相关依赖到注入 taro 目录
|
|
578
620
|
if (that.indexOfLibraries(source) > -1) {
|
|
@@ -603,19 +645,18 @@ declare global {
|
|
|
603
645
|
}
|
|
604
646
|
function injectLoaderMeta() {
|
|
605
647
|
return {
|
|
606
|
-
name: 'taro:vite-
|
|
648
|
+
name: 'taro:vite-loader-meta',
|
|
607
649
|
buildStart() {
|
|
608
650
|
return __awaiter(this, void 0, void 0, function* () {
|
|
609
|
-
|
|
610
|
-
const
|
|
611
|
-
const compiler = info === null || info === void 0 ? void 0 : info.meta.viteCompilerContext;
|
|
651
|
+
const { getViteHarmonyCompilerContext } = that.ctx.runnerUtils;
|
|
652
|
+
const compiler = getViteHarmonyCompilerContext(this);
|
|
612
653
|
if (compiler) {
|
|
613
654
|
switch (that.framework) {
|
|
614
655
|
// @ts-ignore
|
|
615
656
|
case 'solid':
|
|
616
657
|
compiler.loaderMeta || (compiler.loaderMeta = {});
|
|
617
658
|
compiler.loaderMeta.importFrameworkStatement = ``;
|
|
618
|
-
compiler.mockAppStatement = `
|
|
659
|
+
compiler.loaderMeta.mockAppStatement = `
|
|
619
660
|
function App(props) {
|
|
620
661
|
return null
|
|
621
662
|
}
|
|
@@ -1151,7 +1192,7 @@ class Harmony extends service.TaroPlatformBase {
|
|
|
1151
1192
|
const outDir = path.join(compsOutDir, name);
|
|
1152
1193
|
helper.fs.copy(src, outDir);
|
|
1153
1194
|
});
|
|
1154
|
-
this.
|
|
1195
|
+
this.modifyHostPackage(config.harmony);
|
|
1155
1196
|
});
|
|
1156
1197
|
}
|
|
1157
1198
|
modifyWebpackConfig() {
|
|
@@ -1214,13 +1255,13 @@ class Harmony extends service.TaroPlatformBase {
|
|
|
1214
1255
|
console.warn(helper.chalk.red('设置鸿蒙 Hap 配置失败:', err));
|
|
1215
1256
|
});
|
|
1216
1257
|
}
|
|
1217
|
-
|
|
1258
|
+
modifyHostPackage({ projectPath, hapName = 'entry' }) {
|
|
1218
1259
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1260
|
+
const packageJsonFile = path.join(projectPath, hapName, 'package.json');
|
|
1219
1261
|
const hmsDeps = {
|
|
1220
1262
|
'@hmscore/hms-js-base': '^6.1.0-300',
|
|
1221
1263
|
'@hmscore/hms-jsb-account': '^1.0.300'
|
|
1222
1264
|
};
|
|
1223
|
-
const packageJsonFile = path.resolve(dest, '../../../../../package.json');
|
|
1224
1265
|
const isExists = yield helper.fs.pathExists(packageJsonFile);
|
|
1225
1266
|
if (!isExists)
|
|
1226
1267
|
return;
|
|
@@ -1237,6 +1278,7 @@ class Harmony extends service.TaroPlatformBase {
|
|
|
1237
1278
|
}
|
|
1238
1279
|
packageJson = JSON.stringify(packageJson);
|
|
1239
1280
|
yield helper.fs.writeFile(packageJsonFile, packageJson);
|
|
1281
|
+
return packageJson;
|
|
1240
1282
|
});
|
|
1241
1283
|
}
|
|
1242
1284
|
getChunkEntryModule(compilation, chunk, compiler = 'webpack4') {
|
|
@@ -1305,6 +1347,7 @@ function assertHarmonyConfig(ctx, config) {
|
|
|
1305
1347
|
}
|
|
1306
1348
|
}
|
|
1307
1349
|
|
|
1350
|
+
exports.HarmonyOS_ArkTS = Harmony$1;
|
|
1308
1351
|
exports.HarmonyOS_JSUI = Harmony;
|
|
1309
1352
|
exports.default = index;
|
|
1310
1353
|
//# sourceMappingURL=index.js.map
|