@tarojs/plugin-platform-harmony-ets 4.0.0-beta.3 → 4.0.0-beta.31

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.
Files changed (103) hide show
  1. package/dist/apis/base/system.ts +53 -20
  2. package/dist/apis/canvas/index.ts +10 -1
  3. package/dist/apis/framework/index.ts +1 -5
  4. package/dist/apis/index.ts +27 -12
  5. package/dist/apis/network/request.ts +5 -5
  6. package/dist/apis/route/index.ts +15 -0
  7. package/dist/apis/storage/index.ts +205 -63
  8. package/dist/apis/ui/animation/animation.ts +2 -1
  9. package/dist/apis/utils/index.ts +1 -1
  10. package/dist/apis/wxml/IntersectionObserver.ts +18 -10
  11. package/dist/apis/wxml/index.ts +2 -0
  12. package/dist/components-harmony-ets/button.ets +50 -78
  13. package/dist/components-harmony-ets/canvas.ets +51 -0
  14. package/dist/components-harmony-ets/checkbox.ets +23 -209
  15. package/dist/components-harmony-ets/form.ets +44 -158
  16. package/dist/components-harmony-ets/icon.ets +38 -83
  17. package/dist/components-harmony-ets/image.ets +29 -78
  18. package/dist/components-harmony-ets/index.ets +53 -0
  19. package/dist/components-harmony-ets/innerHtml.ets +11 -6
  20. package/dist/components-harmony-ets/input.ets +11 -67
  21. package/dist/components-harmony-ets/label.ets +58 -172
  22. package/dist/components-harmony-ets/movableArea.ets +96 -0
  23. package/dist/components-harmony-ets/movableView.ets +74 -0
  24. package/dist/components-harmony-ets/picker.ets +32 -147
  25. package/dist/components-harmony-ets/progress.ets +54 -0
  26. package/dist/components-harmony-ets/pseudo.ets +80 -0
  27. package/dist/components-harmony-ets/radio.ets +23 -210
  28. package/dist/components-harmony-ets/richText.ets +22 -102
  29. package/dist/components-harmony-ets/scrollView.ets +73 -169
  30. package/dist/components-harmony-ets/slider.ets +11 -72
  31. package/dist/components-harmony-ets/style.ets +280 -0
  32. package/dist/components-harmony-ets/swiper.ets +37 -87
  33. package/dist/components-harmony-ets/switch.ets +11 -71
  34. package/dist/components-harmony-ets/text.ets +57 -89
  35. package/dist/components-harmony-ets/textArea.ets +11 -67
  36. package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
  37. package/dist/components-harmony-ets/utils/DynamicCenter.ts +1 -1
  38. package/dist/components-harmony-ets/utils/flexManager.ets +11 -9
  39. package/dist/components-harmony-ets/utils/helper.ets +4 -5
  40. package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
  41. package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
  42. package/dist/components-harmony-ets/utils/index.ts +50 -51
  43. package/dist/components-harmony-ets/utils/styles.ets +167 -87
  44. package/dist/components-harmony-ets/video.ets +41 -89
  45. package/dist/components-harmony-ets/view.ets +53 -159
  46. package/dist/components-harmony-ets/webView.ets +44 -99
  47. package/dist/index.d.ts +151 -0
  48. package/dist/index.js +69 -32
  49. package/dist/index.js.map +1 -1
  50. package/dist/runtime-ets/bom/window.ts +7 -0
  51. package/dist/runtime-ets/current.ts +3 -0
  52. package/dist/runtime-ets/dom/bind.ts +20 -6
  53. package/dist/runtime-ets/dom/cssNesting.ts +393 -0
  54. package/dist/runtime-ets/dom/cssStyleDeclaration.ts +12 -40
  55. package/dist/runtime-ets/dom/document.ts +22 -8
  56. package/dist/runtime-ets/dom/element/canvas.ts +136 -0
  57. package/dist/runtime-ets/dom/element/element.ts +128 -51
  58. package/dist/runtime-ets/dom/element/form.ts +15 -18
  59. package/dist/runtime-ets/dom/element/index.ts +16 -3
  60. package/dist/runtime-ets/dom/element/movableArea.ts +12 -0
  61. package/dist/runtime-ets/dom/element/movableView.ts +193 -0
  62. package/dist/runtime-ets/dom/element/normal.ts +8 -3
  63. package/dist/runtime-ets/dom/element/progress.ts +12 -0
  64. package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
  65. package/dist/runtime-ets/dom/element/text.ts +1 -8
  66. package/dist/runtime-ets/dom/element/video.ts +5 -3
  67. package/dist/runtime-ets/dom/element/webView.ts +8 -0
  68. package/dist/runtime-ets/dom/event.ts +0 -1
  69. package/dist/runtime-ets/dom/eventTarget.ts +0 -3
  70. package/dist/runtime-ets/dom/node.ts +29 -27
  71. package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +189 -211
  72. package/dist/runtime-ets/dom/stylesheet/index.ts +28 -308
  73. package/dist/runtime-ets/dom/stylesheet/type.ts +18 -6
  74. package/dist/runtime-ets/dom/stylesheet/util.ts +31 -25
  75. package/dist/runtime-ets/index.ts +2 -2
  76. package/dist/runtime-ets/interface/event.ts +1 -1
  77. package/dist/runtime-ets/utils/index.ts +43 -10
  78. package/dist/runtime-ets/utils/info.ts +1 -1
  79. package/dist/runtime-framework/react/app.ts +7 -2
  80. package/dist/runtime-framework/react/index.ts +0 -2
  81. package/dist/runtime-framework/react/native-page.ts +22 -12
  82. package/dist/runtime-framework/react/page.ts +3 -8
  83. package/dist/runtime-framework/solid/app.ts +25 -45
  84. package/dist/runtime-framework/solid/connect.ts +21 -3
  85. package/dist/runtime-framework/solid/hooks.ts +16 -11
  86. package/dist/runtime-framework/solid/index.ts +6 -2
  87. package/dist/runtime-framework/solid/page.ts +84 -30
  88. package/dist/runtime-framework/solid/reconciler/props.ts +65 -20
  89. package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
  90. package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
  91. package/dist/runtime-framework/solid/utils/index.ts +0 -2
  92. package/dist/runtime-utils.d.ts +827 -0
  93. package/dist/runtime-utils.js +273 -109
  94. package/dist/runtime-utils.js.map +1 -1
  95. package/dist/runtime.d.ts +1 -0
  96. package/dist/runtime.js +273 -109
  97. package/dist/runtime.js.map +1 -1
  98. package/index.js +3 -1
  99. package/package.json +13 -13
  100. package/types/index.d.ts +4 -0
  101. package/dist/runtime-ets/utils/bind.ts +0 -24
  102. /package/dist/components-harmony-ets/{index.ts → tag.ts} +0 -0
  103. /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
package/dist/index.js CHANGED
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var helper = require('@tarojs/helper');
6
6
  var path = require('node:path');
7
7
  var runnerUtils = require('@tarojs/runner-utils');
8
- var shared = require('@tarojs/shared');
9
8
  var service = require('@tarojs/service');
10
9
  var _package = require('@tarojs/service/dist/utils/package');
10
+ var shared = require('@tarojs/shared');
11
11
  var webpackSources = require('webpack-sources');
12
12
  var template = require('@tarojs/shared/dist/template');
13
13
 
@@ -244,10 +244,11 @@ class TaroPlatformHarmony extends service.TaroPlatform {
244
244
  FRAMEWORK: JSON.stringify(this.config.framework),
245
245
  TARO_ENV: JSON.stringify(this.platform),
246
246
  TARO_PLATFORM: JSON.stringify(this.platformType),
247
- TARO_VERSION: JSON.stringify(_package.getPkgVersion())
247
+ TARO_VERSION: JSON.stringify(_package.getPkgVersion()),
248
+ SUPPORT_TARO_POLYFILL: 'disabled',
248
249
  },
249
250
  });
250
- return Object.assign(Object.assign(Object.assign({}, config), { buildAdapter: config.platform, fileType: this.fileType, platformType: this.platformType, useETS: this.useETS, useJSON5: this.useJSON5 }), extraOptions);
251
+ return Object.assign(Object.assign(Object.assign({}, config), { buildAdapter: config.platform, fileType: this.fileType, platformType: this.platformType, useETS: this.useETS, useNesting: config.useNesting, useJSON5: this.useJSON5 }), extraOptions);
251
252
  }
252
253
  /**
253
254
  * 调用 runner 开始编译
@@ -316,14 +317,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
316
317
  ['react', /^react$|react[\\/]cjs/],
317
318
  ['react/jsx-runtime', /^react[\\/]jsx-runtime$/], // Note: React 环境下自动注入,避免重复
318
319
  ];
320
+ this.harmonyScope = [...HARMONY_SCOPES];
321
+ const that = this;
319
322
  this.setupTransaction.addWrapper({
320
323
  close() {
321
- this.modifyViteConfig();
324
+ that.modifyViteConfig();
322
325
  },
323
326
  });
324
327
  ctx.onBuildFinish(() => {
325
328
  const outDir = path__namespace.resolve(process.cwd(), config.outputRoot);
326
- this.handleResourceEmit(outDir);
329
+ that.handleResourceEmit(outDir);
327
330
  });
328
331
  }
329
332
  get framework() {
@@ -335,6 +338,11 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
335
338
  get apiLibrary() {
336
339
  return path__namespace.resolve(__dirname, './apis');
337
340
  }
341
+ get apiEntry() {
342
+ return [
343
+ /(@tarojs[\\/]plugin-platform-harmony-ets|taro-platform-harmony)[\\/]dist[\\/]apis[\\/]index\.ts/,
344
+ ];
345
+ }
338
346
  get componentLibrary() {
339
347
  return path__namespace.resolve(__dirname, './components-harmony-ets');
340
348
  }
@@ -371,8 +379,8 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
371
379
  return;
372
380
  if (this.excludeLibraries.some(e => typeof e === 'string' ? e === lib : e.test(lib)))
373
381
  return;
382
+ const { outputRoot, chorePackagePrefix } = this.ctx.runOpts.config;
374
383
  if (sync) {
375
- const { outputRoot } = this.ctx.runOpts.config;
376
384
  const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES);
377
385
  // FIXME 不支持 alias 配置
378
386
  const libName = lib;
@@ -423,6 +431,7 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
423
431
  if ((/(?:import\s|from\s|require\()['"]([\\/.][^'"\s]+)['"]\)?/g.test(code)
424
432
  || /\/{3}\s<reference\spath=['"][^'"\s]+['"]\s\/>/g.test(code))
425
433
  && `${libName}${path__namespace.extname(libDir)}` !== libDir) {
434
+ // Note: 文件包含包内引用的依赖
426
435
  const pkgPath = path__namespace.relative(libName, libDir);
427
436
  if (new RegExp(`^index(${this.extensions.map(e => e.replace('.', '\\.')).join('|')})$`).test(pkgPath)) {
428
437
  // Note: 入口为 index 场景
@@ -473,16 +482,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
473
482
  }
474
483
  else if (stat.isFile()) {
475
484
  let code = helper.fs.readFileSync(lib, { encoding: 'utf8' });
476
- // TODO: 后续这部分代码应该根据使用的框架抽离到对应的平台插件处
477
- 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))) {
478
486
  code = apiLoader(code);
479
487
  }
480
488
  if (this.extensions.includes(path__namespace.extname(lib))) {
481
- code = code.replace(/(?:import\s|from\s|require\()['"]([^.][^'"\s]+)['"]\)?/g, (src, p1) => {
489
+ // Note: 查询 externals 内的依赖,并将它们添加到 externalDeps
490
+ code = code.replace(/(?:import\s|from\s|require\()['"]([^\\/.][^'"\s]+)['"]\)?/g, (src, p1) => {
482
491
  const { outputRoot } = this.ctx.runOpts.config;
483
492
  const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES, p1);
484
493
  const relativePath = parseRelativePath(path__namespace.dirname(target), targetPath);
485
- if (HARMONY_SCOPES.every(e => !e.test(p1))) {
494
+ if (this.harmonyScope.every(e => !e.test(p1))) {
486
495
  if (this.indexOfLibraries(p1) === -1 && !/\.(d\.ts|flow\.js)$/.test(lib)) {
487
496
  this.externalDeps.push([p1, new RegExp(`^${p1.replace(/([-\\/$])/g, '\\$1')}$`)]);
488
497
  this.moveLibraries(p1, targetPath, path__namespace.dirname(lib), true);
@@ -500,9 +509,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
500
509
  if (['.ts'].includes(ext)) {
501
510
  code = '// @ts-nocheck\n' + code;
502
511
  }
512
+ // 处理嵌套样式的编译,需要针对ReactElement进行props操作,dev模式下会Object.freeze,所以需要在开发模式下注入Object.freeze来覆盖解锁
513
+ // 处理的方法再taro-platform-harmony/src/runtime-ets/dom/cssNesting: ele.props.style = declaration
514
+ if (/react\/jsx-runtime/.test(lib) && process.env.NODE_ENV === 'development') {
515
+ code = 'Object.freeze = (obj) => obj \n' + code;
516
+ }
503
517
  }
504
- if (/tarojs[\\/]taro[\\/]types[\\/]index.d.ts/.test(target)) {
505
- code = `/// <reference path="global.d.ts" />
518
+ // Note: 传入 chorePackagePrefix 时,不生成核心依赖库
519
+ if (!chorePackagePrefix) {
520
+ if (/tarojs[\\/]taro[\\/]types[\\/]index.d.ts/.test(target)) {
521
+ code = `/// <reference path="global.d.ts" />
506
522
 
507
523
  /// <reference path="taro.api.d.ts" />
508
524
  /// <reference path="taro.component.d.ts" />
@@ -522,14 +538,15 @@ declare global {
522
538
  const defineAppConfig: (config: Taro.Config) => Taro.Config
523
539
  const definePageConfig: (config: Taro.Config) => Taro.Config
524
540
  }`;
525
- }
526
- try {
527
- const targetPath = target.replace(new RegExp(`\\b${helper.NODE_MODULES}\\b`), 'npm');
528
- helper.fs.ensureDirSync(path__namespace.dirname(targetPath));
529
- helper.fs.writeFileSync(targetPath, code);
530
- }
531
- catch (e) {
532
- console.error(`[taro-arkts] inject ${lib} to ${target} failed`, e);
541
+ }
542
+ try {
543
+ const targetPath = target.replace(new RegExp(`\\b${helper.NODE_MODULES}\\b`), 'npm');
544
+ helper.fs.ensureDirSync(path__namespace.dirname(targetPath));
545
+ helper.fs.writeFileSync(targetPath, code);
546
+ }
547
+ catch (e) {
548
+ console.error(`[taro-arkts] inject ${lib} to ${target} failed`, e);
549
+ }
533
550
  }
534
551
  }
535
552
  else if (stat.isSymbolicLink()) {
@@ -551,15 +568,15 @@ declare global {
551
568
  const that = this;
552
569
  const { appPath } = that.ctx.paths;
553
570
  const { config } = that.ctx.runOpts;
554
- const { outputRoot } = config;
571
+ const { outputRoot, ohPackage = {}, chorePackagePrefix } = config;
555
572
  if (!that.framework.includes('vue')) {
556
573
  that.excludeLibraries.push(/\bvue\b/);
557
574
  }
558
575
  // @ts-ignore
559
576
  if (that.framework === 'solid') {
560
577
  that.externalDeps.push([
561
- '@tarojs/plugin-framework-react/dist/runtime/reconciler',
562
- /^@tarojs\/plugin-framework-react\/dist\/runtime\/reconciler$/,
578
+ '@tarojs/plugin-framework-react/dist/reconciler',
579
+ /^@tarojs\/plugin-framework-react\/dist\/reconciler$/,
563
580
  path__namespace.join(this.runtimeFrameworkLibrary, 'reconciler')
564
581
  ]);
565
582
  that.externalDeps.push([
@@ -567,11 +584,29 @@ declare global {
567
584
  /^solid-js\/universal$/,
568
585
  ]);
569
586
  }
570
- function modifyResolveId({ source = '', importer = '', options = {}, name = 'modifyResolveId', resolve }) {
571
- if (shared.isFunction(resolve)) {
572
- if (source === that.runtimePath || that.runtimePath.includes(source)) {
573
- return resolve('@tarojs/runtime', importer, options);
574
- }
587
+ const externals = Object.keys(ohPackage.dependencies || []).concat(Object.keys(ohPackage.devDependencies || []));
588
+ function modifyResolveId({ source = '', name = 'modifyResolveId' }) {
589
+ if (externals.includes(source)) {
590
+ return {
591
+ external: true,
592
+ id: source,
593
+ resolvedBy: name,
594
+ };
595
+ }
596
+ else if (source.includes('css_variables')) {
597
+ return {
598
+ external: true,
599
+ id: path__namespace.join(outputRoot, 'css_variables'),
600
+ moduleSideEffects: 'no-treeshake',
601
+ resolvedBy: name,
602
+ };
603
+ }
604
+ if (chorePackagePrefix && that.indexOfLibraries(source) > -1) {
605
+ return {
606
+ external: true,
607
+ id: path__namespace.join(chorePackagePrefix, source),
608
+ resolvedBy: name,
609
+ };
575
610
  }
576
611
  // Note: 映射 Taro 相关依赖到注入 taro 目录
577
612
  if (that.indexOfLibraries(source) > -1) {
@@ -614,7 +649,7 @@ declare global {
614
649
  case 'solid':
615
650
  compiler.loaderMeta || (compiler.loaderMeta = {});
616
651
  compiler.loaderMeta.importFrameworkStatement = ``;
617
- compiler.mockAppStatement = `
652
+ compiler.loaderMeta.mockAppStatement = `
618
653
  function App(props) {
619
654
  return null
620
655
  }
@@ -1150,7 +1185,7 @@ class Harmony extends service.TaroPlatformBase {
1150
1185
  const outDir = path.join(compsOutDir, name);
1151
1186
  helper.fs.copy(src, outDir);
1152
1187
  });
1153
- this.modifyHostPackageDep(outDir);
1188
+ this.modifyHostPackage(config.harmony);
1154
1189
  });
1155
1190
  }
1156
1191
  modifyWebpackConfig() {
@@ -1213,13 +1248,13 @@ class Harmony extends service.TaroPlatformBase {
1213
1248
  console.warn(helper.chalk.red('设置鸿蒙 Hap 配置失败:', err));
1214
1249
  });
1215
1250
  }
1216
- modifyHostPackageDep(dest) {
1251
+ modifyHostPackage({ projectPath, hapName = 'entry' }) {
1217
1252
  return __awaiter(this, void 0, void 0, function* () {
1253
+ const packageJsonFile = path.join(projectPath, hapName, 'package.json');
1218
1254
  const hmsDeps = {
1219
1255
  '@hmscore/hms-js-base': '^6.1.0-300',
1220
1256
  '@hmscore/hms-jsb-account': '^1.0.300'
1221
1257
  };
1222
- const packageJsonFile = path.resolve(dest, '../../../../../package.json');
1223
1258
  const isExists = yield helper.fs.pathExists(packageJsonFile);
1224
1259
  if (!isExists)
1225
1260
  return;
@@ -1236,6 +1271,7 @@ class Harmony extends service.TaroPlatformBase {
1236
1271
  }
1237
1272
  packageJson = JSON.stringify(packageJson);
1238
1273
  yield helper.fs.writeFile(packageJsonFile, packageJson);
1274
+ return packageJson;
1239
1275
  });
1240
1276
  }
1241
1277
  getChunkEntryModule(compilation, chunk, compiler = 'webpack4') {
@@ -1304,6 +1340,7 @@ function assertHarmonyConfig(ctx, config) {
1304
1340
  }
1305
1341
  }
1306
1342
 
1343
+ exports.HarmonyOS_ArkTS = Harmony$1;
1307
1344
  exports.HarmonyOS_JSUI = Harmony;
1308
1345
  exports.default = index;
1309
1346
  //# sourceMappingURL=index.js.map