@ohos-cpf/3rdloop 0.0.8 → 0.0.9

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 (219) hide show
  1. package/README.md +25 -0
  2. package/lib/cli.js +22 -5
  3. package/lib/doctor.js +111 -10
  4. package/lib/mcp.js +498 -0
  5. package/package.json +6 -2
  6. package/vendor/Archive/data/.index/meta.json +7 -0
  7. package/vendor/Archive/data/.index/search.db +0 -0
  8. package/vendor/Archive/data/docs/experiences/arkts-check-tool-pitfalls-baseline-comparison.md +13 -0
  9. package/vendor/Archive/data/docs/experiences/arkts-deep-path-import-recognition.md +31 -0
  10. package/vendor/Archive/data/docs/experiences/arkts-demo-coverage-entry-file-case-mismatch.md +25 -0
  11. package/vendor/Archive/data/docs/experiences/arkts-demo-coverage-import-trailing-slash.md +20 -0
  12. package/vendor/Archive/data/docs/experiences/arkts-library-source-files-may-be-ts.md +18 -0
  13. package/vendor/Archive/data/docs/experiences/arkts-typedarray-buffer-interface-cast-compile-fixes.md +36 -0
  14. package/vendor/Archive/data/docs/experiences/arkts-xts-compile-error-clustering-fix.md +24 -0
  15. package/vendor/Archive/data/docs/experiences/arkts-xts-doc-expected-value-runtime-probe.md +35 -0
  16. package/vendor/Archive/data/docs/experiences/arkts-xts-fixture-rawfile-testability-injection.md +33 -0
  17. package/vendor/Archive/data/docs/experiences/code-linter-chinese-comment-false-positive.md +16 -0
  18. package/vendor/Archive/data/docs/experiences/esobject-new-expression-variable-tracking.md +33 -0
  19. package/vendor/Archive/data/docs/experiences/filesystem-case-sensitivity-module-resolution.md +31 -0
  20. package/vendor/Archive/data/docs/experiences/gitcode-clone-redirect-warning-normal.md +13 -0
  21. package/vendor/Archive/data/docs/experiences/kn_msgvq1w585ec8319.md +77 -0
  22. package/vendor/Archive/data/docs/experiences/kn_msovnm6rd46de72c.md +98 -0
  23. package/vendor/Archive/data/docs/experiences/kn_mspt8vntfe708576.md +87 -0
  24. package/vendor/Archive/data/docs/experiences/kn_mspu1ei77adbbb48.md +133 -0
  25. package/vendor/Archive/data/docs/experiences/kn_mspubgak8d30bfce.md +128 -0
  26. package/vendor/Archive/data/docs/experiences/kn_mspug2de3cb1f7c3.md +115 -0
  27. package/vendor/Archive/data/docs/experiences/kn_skill_opt_001.md +38 -0
  28. package/vendor/Archive/data/docs/experiences/loop-artifacts-verification-evidence-triangle.md +19 -0
  29. package/vendor/Archive/data/docs/experiences/macos-bash-replace-build-ps1.md +19 -0
  30. package/vendor/Archive/data/docs/experiences/macos-bsd-diff-q-illegal-option.md +15 -0
  31. package/vendor/Archive/data/docs/experiences/migrate-cjs-compatible-api-version-map-limit.md +17 -0
  32. package/vendor/Archive/data/docs/experiences/mp3agic-arkts-library-behavior-quirks.md +21 -0
  33. package/vendor/Archive/data/docs/experiences/ohos-face-detection-scan-api-mapping.md +15 -0
  34. package/vendor/Archive/data/docs/experiences/pr-metadata-and-diff-integrity-verification.md +12 -0
  35. package/vendor/Archive/data/docs/experiences/rn-coverage-index-signature-pseudo-member-false-negative.md +32 -0
  36. package/vendor/Archive/data/docs/experiences/rn-memory-check-severity-calibration.md +21 -0
  37. package/vendor/Archive/data/docs/experiences/rn-platform-specific-api-exclusion-evidence.md +24 -0
  38. package/vendor/Archive/data/docs/experiences/rn-upstream-version-diff-pitfalls.md +17 -0
  39. package/vendor/Archive/data/docs/experiences/rn-version-gap-risk-rating-rules.md +13 -0
  40. package/vendor/Archive/data/docs/experiences/rn-view-lib-native-contract-diff-fabric-spec.md +16 -0
  41. package/vendor/Archive/data/docs/experiences/rnoh-adapter-package-version-field-semantics.md +18 -0
  42. package/vendor/Archive/data/docs/experiences/rnoh-arkts-sqlite-rows-array-format.md +18 -0
  43. package/vendor/Archive/data/docs/experiences/rnoh-dependency-residue-scan-strategy.md +18 -0
  44. package/vendor/Archive/data/docs/experiences/rnoh-example-local-lib-dep-use-tgz.md +53 -0
  45. package/vendor/Archive/data/docs/experiences/rnoh-example-prereserve-rntesterlist.md +17 -0
  46. package/vendor/Archive/data/docs/experiences/rnoh-example-template-compatiblesdkversion-upgrade.md +29 -0
  47. package/vendor/Archive/data/docs/experiences/rnoh-example-turbomodule-shell-adaptation-checklist.md +41 -0
  48. package/vendor/Archive/data/docs/experiences/rnoh-mcp-build-project-tool-risk.md +18 -0
  49. package/vendor/Archive/data/docs/experiences/rnoh-npm-devdependencies-version-precheck.md +29 -0
  50. package/vendor/Archive/data/docs/experiences/rnoh-repo-baseline-version-verification.md +13 -0
  51. package/vendor/Archive/data/docs/experiences/rnoh-repo-upstream-directory-mapping.md +18 -0
  52. package/vendor/Archive/data/docs/experiences/rnoh-stateless-library-zero-leak-verification.md +31 -0
  53. package/vendor/Archive/data/docs/experiences/rnoh-template-npmrc-credential-removal.md +15 -0
  54. package/vendor/Archive/data/docs/experiences/rnoh-turbomodule-codegen-wiring-verification.md +19 -0
  55. package/vendor/Archive/data/docs/experiences/rnoh-turbomodule-cpp-methodmap-compatibility-check.md +20 -0
  56. package/vendor/Archive/data/docs/experiences/scenario-doc-vs-source-signature-diff-four-patterns.md +24 -0
  57. package/vendor/Archive/data/docs/experiences/static-analysis-grep-cross-validation.md +29 -0
  58. package/vendor/Archive/demo.js +489 -0
  59. package/vendor/Archive/index.js +43 -0
  60. package/vendor/Archive/package.json +16 -0
  61. package/vendor/Archive/src/constants.js +83 -0
  62. package/vendor/Archive/src/data/stopwords.txt +110 -0
  63. package/vendor/Archive/src/data/synonyms.json +25 -0
  64. package/vendor/Archive/src/data/terms.txt +59 -0
  65. package/vendor/Archive/src/db/sqlite-backend.js +312 -0
  66. package/vendor/Archive/src/db/sqlite-schema.js +64 -0
  67. package/vendor/Archive/src/engine.js +501 -0
  68. package/vendor/Archive/src/index/index-manager.js +203 -0
  69. package/vendor/Archive/src/index/index-state.js +94 -0
  70. package/vendor/Archive/src/index/search-text-builder.js +106 -0
  71. package/vendor/Archive/src/index.js +22 -0
  72. package/vendor/Archive/src/parser/api-identifiers.js +121 -0
  73. package/vendor/Archive/src/parser/api-suffixes.js +48 -0
  74. package/vendor/Archive/src/parser/heading-normalize.js +40 -0
  75. package/vendor/Archive/src/parser/markdown-splitter.js +215 -0
  76. package/vendor/Archive/src/search/catalog-routing.js +87 -0
  77. package/vendor/Archive/src/search/fts-search.js +289 -0
  78. package/vendor/Archive/src/search/query-normalizer.js +159 -0
  79. package/vendor/Archive/src/search/query-rewriter.js +72 -0
  80. package/vendor/Archive/src/search/search-engine.js +72 -0
  81. package/vendor/Archive/src/search/snippet.js +64 -0
  82. package/vendor/Archive/src/store/dir-store.js +103 -0
  83. package/vendor/Archive/src/store/doc-store.js +36 -0
  84. package/vendor/Archive/src/tokenizer/lexicon.js +151 -0
  85. package/vendor/Archive/src/tokenizer/tokenizer.js +167 -0
  86. package/vendor/Archive/src/types.js +86 -0
  87. package/vendor/Archive/src/utils/hash.js +16 -0
  88. package/vendor/Archive/src/utils/lock.js +73 -0
  89. package/vendor/Archive/src/utils/path-safety.js +96 -0
  90. package/vendor/Archive/src/utils/paths.js +39 -0
  91. package/vendor/BadCase/rn/INDEX.md +127 -0
  92. package/vendor/BadCase/rn/cases/KI-001-webview/350/247/206/351/242/221/346/227/240/346/263/225/346/250/252/345/261/217.md +52 -0
  93. package/vendor/BadCase/rn/cases/KI-002-fastImage/347/203/255/346/233/264/346/226/260/345/233/276/347/211/207/345/244/261/350/264/245.md +37 -0
  94. package/vendor/BadCase/rn/cases/KI-003-wechat/347/274/251/347/225/245/345/233/276/346/234/254/345/234/260/345/233/276/347/211/207.md +62 -0
  95. package/vendor/BadCase/rn/cases/KI-004-wechat/345/233/236/350/260/203/346/227/266/345/272/217.md +47 -0
  96. package/vendor/BadCase/rn/cases/KI-005-geolocation/345/257/274/345/205/245/350/267/257/345/276/204/345/220/216/347/274/200.md +31 -0
  97. package/vendor/BadCase/rn/cases/KI-006-SmartRefreshLayout/346/231/272/350/203/275/346/214/207/351/222/210/345/264/251/346/272/203.md +55 -0
  98. package/vendor/BadCase/rn/cases/KI-007-orientation-locker/344/274/240/346/204/237/345/231/250/345/210/235/345/247/213/345/214/226.md +58 -0
  99. package/vendor/BadCase/rn/cases/KI-008-orientation-locker/344/274/240/346/204/237/345/231/250/345/274/225/347/224/250/350/256/241/346/225/260.md +47 -0
  100. package/vendor/BadCase/rn/cases/KI-009-pager-view/345/265/214/345/245/227/346/273/221/345/212/250.md +38 -0
  101. package/vendor/BadCase/rn/cases/KI-010-screens/346/211/213/345/212/277/345/206/262/347/252/201.md +48 -0
  102. package/vendor/BadCase/rn/cases/KI-011-spring-scrollview/346/211/213/345/212/277/351/207/215/345/244/215/347/273/221/345/256/232.md +49 -0
  103. package/vendor/BadCase/rn/cases/KI-012-qr-camera/346/250/252/345/261/217/351/200/202/351/205/215.md +59 -0
  104. package/vendor/BadCase/rn/cases/KI-013-webview/346/267/261/350/211/262/346/250/241/345/274/217/350/203/214/346/231/257/350/211/262.md +37 -0
  105. package/vendor/BadCase/rn/cases/KI-014-amap-geolocation/345/233/236/350/260/203/347/274/272/345/244/261.md +42 -0
  106. package/vendor/BadCase/rn/cases/KI-015-reanimated/350/277/220/350/241/214/346/227/266/346/236/220/346/236/204/345/264/251/346/272/203.md +54 -0
  107. package/vendor/BadCase/rn/cases/KI-016-fs/346/226/207/344/273/266/350/257/273/345/217/226/347/274/226/347/240/201.md +58 -0
  108. package/vendor/BadCase/rn/cases/KI-017-blob-util/345/217/202/346/225/260/347/274/226/347/240/201/351/224/231/350/257/257.md +39 -0
  109. package/vendor/BadCase/rn/cases/KI-018-modal/345/274/271/347/252/227/351/227/252/347/203/201.md +53 -0
  110. package/vendor/BadCase/rn/cases/KI-019-code-push/351/207/215/345/220/257/351/200/273/350/276/221/345/244/261/346/225/210.md +79 -0
  111. package/vendor/BadCase/rn/cases/KI-020-netinfo/346/225/217/346/204/237/344/277/241/346/201/257/346/263/204/351/234/262.md +60 -0
  112. package/vendor/BadCase/rn/cases/KI-021-video/346/234/254/345/234/260/350/247/206/351/242/221/346/222/255/346/224/276/345/274/202/345/270/270.md +79 -0
  113. package/vendor/BadCase/rn/cases/KI-022-audio-recorder-player/346/236/232/344/270/276/347/274/272/345/244/261.md +38 -0
  114. package/vendor/BadCase/rn/cases/KI-023-svg/346/270/220/345/217/230/347/273/247/346/211/277/345/244/261/346/225/210.md +62 -0
  115. package/vendor/BadCase/rn/generalization-log.md +55 -0
  116. package/vendor/BadCase/rn/pr-info/rntpc_react-native-SmartRefreshLayout-32.json +328 -0
  117. package/vendor/BadCase/rn/pr-info/rntpc_react-native-SmartRefreshLayout-32.md +382 -0
  118. package/vendor/BadCase/rn/pr-info/rntpc_react-native-amap-geolocation-27.json +1351 -0
  119. package/vendor/BadCase/rn/pr-info/rntpc_react-native-amap-geolocation-27.md +1176 -0
  120. package/vendor/BadCase/rn/pr-info/rntpc_react-native-audio-recorder-player-22.json +538 -0
  121. package/vendor/BadCase/rn/pr-info/rntpc_react-native-audio-recorder-player-22.md +1488 -0
  122. package/vendor/BadCase/rn/pr-info/rntpc_react-native-blob-util-23.json +211 -0
  123. package/vendor/BadCase/rn/pr-info/rntpc_react-native-blob-util-23.md +35 -0
  124. package/vendor/BadCase/rn/pr-info/rntpc_react-native-code-push-17.json +2048 -0
  125. package/vendor/BadCase/rn/pr-info/rntpc_react-native-code-push-17.md +3866 -0
  126. package/vendor/BadCase/rn/pr-info/rntpc_react-native-fast-image-102.json +198 -0
  127. package/vendor/BadCase/rn/pr-info/rntpc_react-native-fast-image-102.md +40 -0
  128. package/vendor/BadCase/rn/pr-info/rntpc_react-native-fs-38.json +751 -0
  129. package/vendor/BadCase/rn/pr-info/rntpc_react-native-fs-38.md +883 -0
  130. package/vendor/BadCase/rn/pr-info/rntpc_react-native-geolocation-24.json +1544 -0
  131. package/vendor/BadCase/rn/pr-info/rntpc_react-native-geolocation-24.md +2598 -0
  132. package/vendor/BadCase/rn/pr-info/rntpc_react-native-modal-20.json +246 -0
  133. package/vendor/BadCase/rn/pr-info/rntpc_react-native-modal-20.md +554 -0
  134. package/vendor/BadCase/rn/pr-info/rntpc_react-native-netinfo-31.json +211 -0
  135. package/vendor/BadCase/rn/pr-info/rntpc_react-native-netinfo-31.md +54 -0
  136. package/vendor/BadCase/rn/pr-info/rntpc_react-native-orientation-locker-45.json +1626 -0
  137. package/vendor/BadCase/rn/pr-info/rntpc_react-native-orientation-locker-45.md +2213 -0
  138. package/vendor/BadCase/rn/pr-info/rntpc_react-native-orientation-locker-51.json +208 -0
  139. package/vendor/BadCase/rn/pr-info/rntpc_react-native-orientation-locker-51.md +77 -0
  140. package/vendor/BadCase/rn/pr-info/rntpc_react-native-pager-view-32.json +377 -0
  141. package/vendor/BadCase/rn/pr-info/rntpc_react-native-pager-view-32.md +174 -0
  142. package/vendor/BadCase/rn/pr-info/rntpc_react-native-qr-decode-image-camera-37.json +232 -0
  143. package/vendor/BadCase/rn/pr-info/rntpc_react-native-qr-decode-image-camera-37.md +194 -0
  144. package/vendor/BadCase/rn/pr-info/rntpc_react-native-reanimated-82.json +198 -0
  145. package/vendor/BadCase/rn/pr-info/rntpc_react-native-reanimated-82.md +67 -0
  146. package/vendor/BadCase/rn/pr-info/rntpc_react-native-screens-87.json +198 -0
  147. package/vendor/BadCase/rn/pr-info/rntpc_react-native-screens-87.md +38 -0
  148. package/vendor/BadCase/rn/pr-info/rntpc_react-native-screens-93.json +208 -0
  149. package/vendor/BadCase/rn/pr-info/rntpc_react-native-screens-93.md +34 -0
  150. package/vendor/BadCase/rn/pr-info/rntpc_react-native-spring-scrollview-38.json +222 -0
  151. package/vendor/BadCase/rn/pr-info/rntpc_react-native-spring-scrollview-38.md +56 -0
  152. package/vendor/BadCase/rn/pr-info/rntpc_react-native-svg-117.json +463 -0
  153. package/vendor/BadCase/rn/pr-info/rntpc_react-native-svg-117.md +383 -0
  154. package/vendor/BadCase/rn/pr-info/rntpc_react-native-video-66.json +464 -0
  155. package/vendor/BadCase/rn/pr-info/rntpc_react-native-video-66.md +565 -0
  156. package/vendor/BadCase/rn/pr-info/rntpc_react-native-webview-112.json +198 -0
  157. package/vendor/BadCase/rn/pr-info/rntpc_react-native-webview-112.md +47 -0
  158. package/vendor/BadCase/rn/pr-info/rntpc_react-native-webview-121.json +232 -0
  159. package/vendor/BadCase/rn/pr-info/rntpc_react-native-webview-121.md +422 -0
  160. package/vendor/BadCase/rn/pr-info/rntpc_react-native-wechat-lib-15.json +295 -0
  161. package/vendor/BadCase/rn/pr-info/rntpc_react-native-wechat-lib-15.md +1038 -0
  162. package/vendor/BadCase/rn/rules/R-01-/345/205/250/345/261/217/347/252/227/345/217/243/347/212/266/346/200/201/347/256/241/347/220/206/345/256/214/346/225/264/346/200/247.md +20 -0
  163. package/vendor/BadCase/rn/rules/R-02-/350/265/204/346/272/220URI/345/275/242/346/200/201/345/210/206/346/224/257/350/246/206/347/233/226.md +21 -0
  164. package/vendor/BadCase/rn/rules/R-03-/351/231/204/345/261/236/346/223/215/344/275/234/345/244/261/350/264/245/351/230/273/346/226/255/344/270/273/346/265/201/347/250/213.md +20 -0
  165. package/vendor/BadCase/rn/rules/R-04-/345/274/202/346/255/245/345/233/236/350/260/203/346/263/250/345/206/214/346/227/266/345/272/217.md +20 -0
  166. package/vendor/BadCase/rn/rules/R-05-/346/250/241/345/235/227/345/257/274/345/205/245/350/267/257/345/276/204/350/247/204/350/214/203.md +19 -0
  167. package/vendor/BadCase/rn/rules/R-06-/344/274/240/346/204/237/345/231/250/347/241/254/344/273/266/346/235/203/351/231/220/346/214/211/351/234/200/350/216/267/345/217/226.md +21 -0
  168. package/vendor/BadCase/rn/rules/R-07-/346/231/272/350/203/275/346/214/207/351/222/210/347/224/237/345/221/275/345/221/250/346/234/237/347/256/241/347/220/206.md +20 -0
  169. package/vendor/BadCase/rn/rules/R-08-/346/211/213/345/212/277/344/272/213/344/273/266/346/263/250/345/206/214/344/270/216/345/206/262/347/252/201/345/244/204/347/220/206.md +22 -0
  170. package/vendor/BadCase/rn/rules/R-09-/346/250/252/347/253/226/345/261/217/345/244/232/345/275/242/346/200/201/345/270/203/345/261/200/351/200/202/351/205/215.md +20 -0
  171. package/vendor/BadCase/rn/rules/R-10-/346/267/261/350/211/262/346/250/241/345/274/217/344/270/273/351/242/230/351/242/234/350/211/262/351/200/202/351/205/215.md +19 -0
  172. package/vendor/BadCase/rn/rules/R-11-/346/216/245/345/217/243/345/233/236/350/260/203/345/256/236/347/216/260/345/256/214/346/225/264/346/200/247.md +20 -0
  173. package/vendor/BadCase/rn/rules/R-12-/345/216/237/347/224/237/350/277/220/350/241/214/346/227/266/350/265/204/346/272/220/346/236/220/346/236/204/346/227/266/345/272/217.md +20 -0
  174. package/vendor/BadCase/rn/rules/R-13-/346/226/207/344/273/266/346/225/260/346/215/256/347/274/226/347/240/201/344/270/216/346/240/274/345/274/217/345/205/274/345/256/271.md +21 -0
  175. package/vendor/BadCase/rn/rules/R-14-/345/212/250/347/224/273/345/210/235/345/247/213/345/214/226/346/227/266/345/272/217/344/270/216/347/212/266/346/200/201/345/220/214/346/255/245.md +20 -0
  176. package/vendor/BadCase/rn/rules/R-15-/347/212/266/346/200/201/346/214/201/344/271/205/345/214/226/344/270/216/351/207/215/345/220/257/351/200/273/350/276/221/344/270/200/350/207/264/346/200/247.md +20 -0
  177. package/vendor/BadCase/rn/rules/R-16-/346/225/217/346/204/237/344/277/241/346/201/257/346/227/245/345/277/227/346/263/204/351/234/262.md +19 -0
  178. package/vendor/BadCase/rn/rules/R-17-/345/252/222/344/275/223/350/265/204/346/272/220/347/224/237/345/221/275/345/221/250/346/234/237/344/270/216/351/224/231/350/257/257/345/244/204/347/220/206.md +21 -0
  179. package/vendor/BadCase/rn/rules/R-18-/350/203/275/345/212/233/346/236/232/344/270/276/351/205/215/347/275/256/345/256/214/346/225/264/346/200/247.md +19 -0
  180. package/vendor/BadCase/rn/rules/R-19-/345/233/276/345/275/242/346/270/262/346/237/223/345/261/236/346/200/247/347/273/247/346/211/277/344/270/216/351/207/215/347/275/256.md +19 -0
  181. package/vendor/MCP/README.md +490 -0
  182. package/vendor/MCP/config.json +29 -0
  183. package/vendor/MCP/package.json +23 -0
  184. package/vendor/MCP/scripts/analyze-demo-coverage.cjs +1203 -0
  185. package/vendor/MCP/scripts/analyze-xts-coverage.cjs +1245 -0
  186. package/vendor/MCP/scripts/deveco_docs.js +247 -0
  187. package/vendor/MCP/scripts/extract-interfaces.cjs +1487 -0
  188. package/vendor/MCP/scripts/flutter-analyze-demo-coverage.cjs +666 -0
  189. package/vendor/MCP/scripts/flutter-analyze-xts-coverage.cjs +684 -0
  190. package/vendor/MCP/scripts/flutter-extract-interfaces.cjs +1251 -0
  191. package/vendor/MCP/scripts/flutter-render-spec-doc.cjs +351 -0
  192. package/vendor/MCP/scripts/render-spec-doc.cjs +347 -0
  193. package/vendor/MCP/scripts/rn-analyze-demo-coverage.cjs +645 -0
  194. package/vendor/MCP/scripts/rn-analyze-test-coverage.cjs +614 -0
  195. package/vendor/MCP/scripts/rn-extract-interfaces.cjs +1462 -0
  196. package/vendor/MCP/scripts/rn-render-spec-doc.cjs +327 -0
  197. package/vendor/MCP/scripts/rn-scan-exports.cjs +1336 -0
  198. package/vendor/MCP/src/client/MCPClientPool.js +220 -0
  199. package/vendor/MCP/src/config/ConfigLoader.js +189 -0
  200. package/vendor/MCP/src/executor/ScriptExecutor.js +110 -0
  201. package/vendor/MCP/src/gateway/Gateway.js +451 -0
  202. package/vendor/MCP/src/index.js +87 -0
  203. package/vendor/MCP/src/library/KBToolProvider.js +229 -0
  204. package/vendor/MCP/src/library/logger.js +60 -0
  205. package/vendor/MCP/src/registry/ScriptRegistry.js +238 -0
  206. package/vendor/MCP/src/registry/ToolRegistry.js +111 -0
  207. package/vendor/MCP/src/types.js +115 -0
  208. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +4 -2
  209. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +3 -3
  210. package/vendor/Server/Skills/knowledge-import/SKILL.md +1 -1
  211. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +12 -4
  212. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +5 -4
  213. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +2 -2
  214. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +2 -2
  215. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +1 -2
  216. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +1 -1
  217. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +1 -2
  218. package/vendor/Server/package.json +5 -1
  219. package/vendor/VERSION +3 -3
@@ -0,0 +1,1626 @@
1
+ {
2
+ "pr": {
3
+ "id": 8991788,
4
+ "html_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/merge_requests/45",
5
+ "number": 45,
6
+ "state": "merged",
7
+ "title": "fix:加速度传感器需要在使用的时候再打开,而不是初始化的时候打开",
8
+ "url": "https://api.gitcode.com/api/v5/repos/CPF-RN/rntpc_react-native-orientation-locker/pulls/45",
9
+ "issue_url": "https://api.gitcode.com/api/v5/repos/CPF-RN/rntpc_react-native-orientation-locker/pulls/45/issues",
10
+ "body": "fix:加速度传感器需要在使用的时候再打开,而不是初始化的时候打开",
11
+ "assignees_number": 3,
12
+ "assignees": [
13
+ {
14
+ "id": "6731c8f2fbbddc0c200a6019",
15
+ "login": "zhu_chengcheng",
16
+ "name": "zhu_chengcheng",
17
+ "avatar_url": "https://cdn-img.gitcode.com/fe/bd/f406eb600317d9bbb6a5c23042b49e5193dfbb7a63ee407f5bbfcbabcd177af1.jpg",
18
+ "html_url": "https://gitcode.com/zhu_chengcheng",
19
+ "assignee": true,
20
+ "code_owner": false,
21
+ "accept": false
22
+ },
23
+ {
24
+ "id": "67fdb69df01e3c566929edd4",
25
+ "login": "gcw_N7oHqLFR",
26
+ "name": "huang_jy",
27
+ "avatar_url": "",
28
+ "html_url": "https://gitcode.com/gcw_N7oHqLFR",
29
+ "assignee": true,
30
+ "code_owner": false,
31
+ "accept": false
32
+ },
33
+ {
34
+ "id": "67316e3733741160e6751351",
35
+ "login": "dingchengjie",
36
+ "name": "dingchengjie",
37
+ "avatar_url": "https://cdn-img.gitcode.com/fa/ed/6fa18810e4276d04d77bccf2f37c2287b44631cdcae7587fc4446f0bd79c2ed3.png",
38
+ "html_url": "https://gitcode.com/dingchengjie",
39
+ "assignee": true,
40
+ "code_owner": false,
41
+ "accept": true
42
+ }
43
+ ],
44
+ "testers": [
45
+ {
46
+ "id": "6541ccea82d8f837210e92c3",
47
+ "login": "openharmony_ci",
48
+ "name": "openharmony_ci",
49
+ "avatar_url": "https://cdn-img.gitcode.com/cb/be/5cb10620b4e9195576142df69cd44bb84df15d769c2a04eff5bf7324b903022c.png?time=1723462328974",
50
+ "html_url": "https://gitcode.com/openharmony_ci",
51
+ "assignee": false,
52
+ "code_owner": false,
53
+ "accept": true
54
+ }
55
+ ],
56
+ "approval_reviewers": [],
57
+ "labels": [
58
+ {
59
+ "id": 13245693,
60
+ "color": "#428BCA",
61
+ "name": "dco检查成功",
62
+ "repository_id": 4368861,
63
+ "created_at": "2026-07-07T17:22:19+08:00",
64
+ "updated_at": "2026-08-06T11:30:12+08:00"
65
+ },
66
+ {
67
+ "id": 13246086,
68
+ "color": "#428BCA",
69
+ "name": "编译成功",
70
+ "repository_id": 4368861,
71
+ "created_at": "2026-07-09T10:15:31+08:00",
72
+ "updated_at": "2026-08-06T19:29:26+08:00"
73
+ },
74
+ {
75
+ "id": 13245696,
76
+ "color": "#428BCA",
77
+ "name": "静态检查成功",
78
+ "repository_id": 4368861,
79
+ "created_at": "2026-07-07T17:33:39+08:00",
80
+ "updated_at": "2026-08-06T19:29:34+08:00"
81
+ }
82
+ ],
83
+ "created_at": "2026-08-06T11:29:27+08:00",
84
+ "updated_at": "2026-08-06T21:41:30+08:00",
85
+ "closed_at": "2026-08-06T21:41:29+08:00",
86
+ "merged_at": "2026-08-06T21:41:29+08:00",
87
+ "merged_by": {
88
+ "id": "6541ccea82d8f837210e92c3",
89
+ "login": "openharmony_ci",
90
+ "name": "openharmony_ci",
91
+ "avatar_url": "https://cdn-img.gitcode.com/cb/be/5cb10620b4e9195576142df69cd44bb84df15d769c2a04eff5bf7324b903022c.png?time=1723462328974",
92
+ "html_url": "https://gitcode.com/openharmony_ci"
93
+ },
94
+ "draft": false,
95
+ "can_merge_check": true,
96
+ "prune_branch": false,
97
+ "mergeable": true,
98
+ "user": {
99
+ "id": "66f4e6edca8388106d213150",
100
+ "login": "qq_434633291111",
101
+ "name": "wupingyuan",
102
+ "avatar_url": "https://cdn-img.gitcode.com/db/bc/dbbc52140cd3dd95d893359fd9341924a707304a0b81ab802ff56cf008923f45.png",
103
+ "html_url": "https://gitcode.com/qq_434633291111"
104
+ },
105
+ "head": {
106
+ "ref": "br_rnoh0.77",
107
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
108
+ "label": "br_rnoh0.77",
109
+ "repo": {
110
+ "path": "rntpc_react-native-orientation-locker",
111
+ "name": "rntpc_react-native-orientation-locker",
112
+ "namespace": {
113
+ "path": "qq_434633291111"
114
+ },
115
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
116
+ "html_url": "https://gitcode.com/qq_434633291111/rntpc_react-native-orientation-locker.git"
117
+ },
118
+ "user": {
119
+ "id": "66f4e6edca8388106d213150",
120
+ "login": "qq_434633291111",
121
+ "name": "wupingyuan",
122
+ "avatar_url": "https://cdn-img.gitcode.com/db/bc/dbbc52140cd3dd95d893359fd9341924a707304a0b81ab802ff56cf008923f45.png",
123
+ "html_url": "https://gitcode.com/qq_434633291111"
124
+ }
125
+ },
126
+ "base": {
127
+ "ref": "br_rnoh0.77",
128
+ "sha": "27a6f2f6d8a554ad24f2c9139971ed72c39ed720",
129
+ "label": "br_rnoh0.77",
130
+ "repo": {
131
+ "path": "rntpc_react-native-orientation-locker",
132
+ "name": "rntpc_react-native-orientation-locker",
133
+ "namespace": {
134
+ "path": "CPF-RN"
135
+ },
136
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
137
+ "html_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker.git"
138
+ }
139
+ },
140
+ "mergeable_state": {
141
+ "merge_request_id": 8991788,
142
+ "state": true,
143
+ "status_without_user_auth": true,
144
+ "conflict_passed": true,
145
+ "branch_missing_passed": true,
146
+ "non_ff_passed": true,
147
+ "mr_state_passed": true,
148
+ "merged_by_user_passed": true,
149
+ "work_in_progress_passed": true,
150
+ "resolve_discussion_passed": true,
151
+ "ci_state_passed": true,
152
+ "merge_by_self_passed": true,
153
+ "can_force_merge": true,
154
+ "approval_reviewers_required_passed": true,
155
+ "approval_approvers_required_passed": true,
156
+ "approval_testers_required_passed": true,
157
+ "merge_request_switch": {
158
+ "review_mode": "approval",
159
+ "merge_method": "merge",
160
+ "only_allow_merge_if_all_discussions_are_resolved": true,
161
+ "disable_merge_by_self": true,
162
+ "only_allow_merge_if_pipeline_succeeds": false,
163
+ "disable_squash_merge": false,
164
+ "squash_merge_with_no_merge_commit": false,
165
+ "approval_required_reviewers_count": 0,
166
+ "approval_required_reviewers_branch": "*",
167
+ "add_notes_after_merged": true,
168
+ "mark_auto_merged_mr_as_closed": false,
169
+ "can_force_merge": true,
170
+ "can_reopen": true
171
+ },
172
+ "reason": {},
173
+ "check_tasks_num": 2,
174
+ "all_depend_merge_request_merged_passed": true,
175
+ "approval_approvers_result": 2,
176
+ "approval_testers_result": 2
177
+ },
178
+ "visibility_reason": "public",
179
+ "close_related_issue": true,
180
+ "squash_merge": false
181
+ },
182
+ "files": [
183
+ {
184
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
185
+ "filename": ".npmignore",
186
+ "additions": 3,
187
+ "deletions": 0,
188
+ "blob_id": "38f460342dbb25f5d54db8c2c7e29273573cf375",
189
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/.npmignore",
190
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/.npmignore",
191
+ "patch": "@@ -49,3 +49,6 @@ yarn-error.log\n .git\n .watchmanconfig\n .history\n+*.tgz\n+example\n+build\n",
192
+ "target_branch": "br_rnoh0.77",
193
+ "source_branch": "br_rnoh0.77",
194
+ "source_project": {
195
+ "id": 9920253,
196
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
197
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
198
+ "path": "rntpc_react-native-orientation-locker"
199
+ },
200
+ "target_project": {
201
+ "id": 4368861,
202
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
203
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
204
+ "path": "rntpc_react-native-orientation-locker"
205
+ }
206
+ },
207
+ {
208
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
209
+ "filename": "example/.eslintrc",
210
+ "status": "added",
211
+ "additions": 19,
212
+ "deletions": 0,
213
+ "blob_id": "53b521e59795fa578228fcfdee48af6501ed352f",
214
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.eslintrc",
215
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.eslintrc",
216
+ "patch": "@@ -0,0 +1,19 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+{\n+ \"extends\": \"@react-native\",\n+ \"rules\": {\n+ \"react-native/no-inline-styles\": \"off\",\n+ \"react/no-unstable-nested-components\": \"off\",\n+ \"react/react-in-jsx-scope\": \"off\",\n+ \"@typescript-eslint/no-unused-vars\": \"warn\",\n+ \"react-hooks/exhaustive-deps\": \"off\",\n+ \"radix\": \"off\",\n+ \"prettier/prettier\": \"warn\",\n+ \"max-lines\": \"off\"\n+ }\n+}\n\\n",
217
+ "target_branch": "br_rnoh0.77",
218
+ "source_branch": "br_rnoh0.77",
219
+ "source_project": {
220
+ "id": 9920253,
221
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
222
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
223
+ "path": "rntpc_react-native-orientation-locker"
224
+ },
225
+ "target_project": {
226
+ "id": 4368861,
227
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
228
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
229
+ "path": "rntpc_react-native-orientation-locker"
230
+ }
231
+ },
232
+ {
233
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
234
+ "filename": "example/.gitignore",
235
+ "status": "added",
236
+ "additions": 71,
237
+ "deletions": 0,
238
+ "blob_id": "7613cdedd309866629ce9ae75eb3855ea0849f0a",
239
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.gitignore",
240
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.gitignore",
241
+ "patch": "@@ -0,0 +1,71 @@\n+.husky\n+bundle.harmony.js\n+package-lock.json\n+*.hbc\n+lintCppResult.txt\n+\n+# ---\n+\n+# OSX\n+#\n+.DS_Store\n+\n+# Xcode\n+#\n+build/\n+*.pbxuser\n+!default.pbxuser\n+*.mode1v3\n+!default.mode1v3\n+*.mode2v3\n+!default.mode2v3\n+*.perspectivev3\n+!default.perspectivev3\n+xcuserdata\n+*.xccheckout\n+*.moved-aside\n+DerivedData\n+*.hmap\n+*.ipa\n+*.xcuserstate\n+\n+# Android/IntelliJ\n+#\n+build/\n+.idea\n+.gradle\n+local.properties\n+*.iml\n+*.hprof\n+.cxx/\n+*.keystore\n+!debug.keystore\n+BuildProfile.ets\n+\n+# node.js\n+#\n+node_modules/\n+npm-debug.log\n+yarn-error.log\n+\n+# fastlane\n+#\n+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n+# screenshots whenever they are needed.\n+# For more information about the recommended setup visit:\n+# https://docs.fastlane.tools/best-practices/source-control/\n+\n+**/fastlane/report.xml\n+**/fastlane/Preview.html\n+**/fastlane/screenshots\n+**/fastlane/test_output\n+\n+# Bundle artifact\n+*.jsbundle\n+\n+# Ruby / CocoaPods\n+/vendor/bundle/\n+\n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+*.htrace\n\\n",
242
+ "target_branch": "br_rnoh0.77",
243
+ "source_branch": "br_rnoh0.77",
244
+ "source_project": {
245
+ "id": 9920253,
246
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
247
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
248
+ "path": "rntpc_react-native-orientation-locker"
249
+ },
250
+ "target_project": {
251
+ "id": 4368861,
252
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
253
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
254
+ "path": "rntpc_react-native-orientation-locker"
255
+ }
256
+ },
257
+ {
258
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
259
+ "filename": "example/.node-version",
260
+ "status": "added",
261
+ "additions": 6,
262
+ "deletions": 0,
263
+ "blob_id": "0b340785231a7dd0a43f008cbcf785d91d33b253",
264
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.node-version",
265
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.node-version",
266
+ "patch": "@@ -0,0 +1,6 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+18\n",
267
+ "target_branch": "br_rnoh0.77",
268
+ "source_branch": "br_rnoh0.77",
269
+ "source_project": {
270
+ "id": 9920253,
271
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
272
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
273
+ "path": "rntpc_react-native-orientation-locker"
274
+ },
275
+ "target_project": {
276
+ "id": 4368861,
277
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
278
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
279
+ "path": "rntpc_react-native-orientation-locker"
280
+ }
281
+ },
282
+ {
283
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
284
+ "filename": "example/.prettierrc.js",
285
+ "status": "added",
286
+ "additions": 7,
287
+ "deletions": 0,
288
+ "blob_id": "2ae7b381ed9590ddf3ba512a496dc8d53dadeea0",
289
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.prettierrc.js",
290
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.prettierrc.js",
291
+ "patch": "@@ -0,0 +1,7 @@\n+module.exports = {\n+ arrowParens: 'avoid',\n+ bracketSameLine: true,\n+ bracketSpacing: true,\n+ singleQuote: true,\n+ trailingComma: 'all',\n+};\n",
292
+ "target_branch": "br_rnoh0.77",
293
+ "source_branch": "br_rnoh0.77",
294
+ "source_project": {
295
+ "id": 9920253,
296
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
297
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
298
+ "path": "rntpc_react-native-orientation-locker"
299
+ },
300
+ "target_project": {
301
+ "id": 4368861,
302
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
303
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
304
+ "path": "rntpc_react-native-orientation-locker"
305
+ }
306
+ },
307
+ {
308
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
309
+ "filename": "example/.watchmanconfig",
310
+ "status": "added",
311
+ "additions": 6,
312
+ "deletions": 0,
313
+ "blob_id": "c8817eae530b549f6ec94218880ce380e5e766ac",
314
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.watchmanconfig",
315
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/.watchmanconfig",
316
+ "patch": "@@ -0,0 +1,6 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+{}\n\\n",
317
+ "target_branch": "br_rnoh0.77",
318
+ "source_branch": "br_rnoh0.77",
319
+ "source_project": {
320
+ "id": 9920253,
321
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
322
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
323
+ "path": "rntpc_react-native-orientation-locker"
324
+ },
325
+ "target_project": {
326
+ "id": 4368861,
327
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
328
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
329
+ "path": "rntpc_react-native-orientation-locker"
330
+ }
331
+ },
332
+ {
333
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
334
+ "filename": "example/app.json",
335
+ "status": "added",
336
+ "additions": 4,
337
+ "deletions": 0,
338
+ "blob_id": "7586f6fa99a6680a35a27fac7255ba721880d461",
339
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/app.json",
340
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/app.json",
341
+ "patch": "@@ -0,0 +1,4 @@\n+{\n+ \"name\": \"app_name\",\n+ \"displayName\": \"tester\"\n+}\n\\n",
342
+ "target_branch": "br_rnoh0.77",
343
+ "source_branch": "br_rnoh0.77",
344
+ "source_project": {
345
+ "id": 9920253,
346
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
347
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
348
+ "path": "rntpc_react-native-orientation-locker"
349
+ },
350
+ "target_project": {
351
+ "id": 4368861,
352
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
353
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
354
+ "path": "rntpc_react-native-orientation-locker"
355
+ }
356
+ },
357
+ {
358
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
359
+ "filename": "example/babel.config.js",
360
+ "status": "added",
361
+ "additions": 6,
362
+ "deletions": 0,
363
+ "blob_id": "0f949a1078e3be59a12aba2f23bb75503a39235e",
364
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/babel.config.js",
365
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/babel.config.js",
366
+ "patch": "@@ -0,0 +1,6 @@\n+module.exports = {\n+ presets: ['module:@react-native/babel-preset'],\n+ plugins: [\n+ 'react-native-reanimated/plugin',\n+ ],\n+};\n",
367
+ "target_branch": "br_rnoh0.77",
368
+ "source_branch": "br_rnoh0.77",
369
+ "source_project": {
370
+ "id": 9920253,
371
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
372
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
373
+ "path": "rntpc_react-native-orientation-locker"
374
+ },
375
+ "target_project": {
376
+ "id": 4368861,
377
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
378
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
379
+ "path": "rntpc_react-native-orientation-locker"
380
+ }
381
+ },
382
+ {
383
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
384
+ "filename": "example/contexts.ts",
385
+ "status": "added",
386
+ "additions": 9,
387
+ "deletions": 0,
388
+ "blob_id": "9e6e247f88330a6d5140eeed49768d7081a2944f",
389
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/contexts.ts",
390
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/contexts.ts",
391
+ "patch": "@@ -0,0 +1,9 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+import React from 'react';\n+\n+export const AppParamsContext = React.createContext(undefined);\n",
392
+ "target_branch": "br_rnoh0.77",
393
+ "source_branch": "br_rnoh0.77",
394
+ "source_project": {
395
+ "id": 9920253,
396
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
397
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
398
+ "path": "rntpc_react-native-orientation-locker"
399
+ },
400
+ "target_project": {
401
+ "id": 4368861,
402
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
403
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
404
+ "path": "rntpc_react-native-orientation-locker"
405
+ }
406
+ },
407
+ {
408
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
409
+ "filename": "example/harmony/.gitignore",
410
+ "status": "added",
411
+ "additions": 22,
412
+ "deletions": 0,
413
+ "blob_id": "4b0cf5631be8eb7e5477eebbf2f86e103efdcbeb",
414
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/.gitignore",
415
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/.gitignore",
416
+ "patch": "@@ -0,0 +1,22 @@\n+# it may cause some issues when building the project when switching branches\n+package-lock.json\n+# we add this because we want to keep the signing configs out of git\n+rnoh_modules\n+\n+**/oh-package-lock.json5\n+# ---\n+\n+/node_modules\n+/local.properties\n+/.idea\n+**/build\n+/.hvigor\n+.cxx\n+/.clangd\n+/.clang-format\n+/.clang-tidy\n+/oh_modules\n+hvigorw\n+hvigorw.bat\n+hvigor/hvigor-wrapper.js\n+\n",
417
+ "target_branch": "br_rnoh0.77",
418
+ "source_branch": "br_rnoh0.77",
419
+ "source_project": {
420
+ "id": 9920253,
421
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
422
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
423
+ "path": "rntpc_react-native-orientation-locker"
424
+ },
425
+ "target_project": {
426
+ "id": 4368861,
427
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
428
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
429
+ "path": "rntpc_react-native-orientation-locker"
430
+ }
431
+ },
432
+ {
433
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
434
+ "filename": "example/harmony/AppScope/app.json5",
435
+ "status": "added",
436
+ "additions": 10,
437
+ "deletions": 0,
438
+ "blob_id": "058bd391dac60928a1857aa31e4b0f712a7bc743",
439
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/app.json5",
440
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/app.json5",
441
+ "patch": "@@ -0,0 +1,10 @@\n+{\n+ \"app\": {\n+ \"bundleName\": \"com.harmony.wechat.lib.demo\",\n+ \"vendor\": \"example\",\n+ \"versionCode\": 1000000,\n+ \"versionName\": \"1.0.0\",\n+ \"icon\": \"$media:app_icon\",\n+ \"label\": \"$string:app_name\"\n+ }\n+}\n",
442
+ "target_branch": "br_rnoh0.77",
443
+ "source_branch": "br_rnoh0.77",
444
+ "source_project": {
445
+ "id": 9920253,
446
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
447
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
448
+ "path": "rntpc_react-native-orientation-locker"
449
+ },
450
+ "target_project": {
451
+ "id": 4368861,
452
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
453
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
454
+ "path": "rntpc_react-native-orientation-locker"
455
+ }
456
+ },
457
+ {
458
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
459
+ "filename": "example/harmony/AppScope/resources/base/element/string.json",
460
+ "status": "added",
461
+ "additions": 8,
462
+ "deletions": 0,
463
+ "blob_id": "698a720065342ae0dadad63eb87d45fec8725f36",
464
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/resources/base/element/string.json",
465
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/resources/base/element/string.json",
466
+ "patch": "@@ -0,0 +1,8 @@\n+{\n+ \"string\": [\n+ {\n+ \"name\": \"app_name\",\n+ \"value\": \"RN Tester\"\n+ }\n+ ]\n+}\n",
467
+ "target_branch": "br_rnoh0.77",
468
+ "source_branch": "br_rnoh0.77",
469
+ "source_project": {
470
+ "id": 9920253,
471
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
472
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
473
+ "path": "rntpc_react-native-orientation-locker"
474
+ },
475
+ "target_project": {
476
+ "id": 4368861,
477
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
478
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
479
+ "path": "rntpc_react-native-orientation-locker"
480
+ }
481
+ },
482
+ {
483
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
484
+ "filename": "example/harmony/AppScope/resources/base/media/app_icon.png",
485
+ "status": "added",
486
+ "additions": 0,
487
+ "deletions": 0,
488
+ "blob_id": "ce307a8827bd75456441ceb57d530e4c8d45d36c",
489
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/resources/base/media/app_icon.png",
490
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/AppScope/resources/base/media/app_icon.png",
491
+ "patch": "Binary files no preview for this file type",
492
+ "target_branch": "br_rnoh0.77",
493
+ "source_branch": "br_rnoh0.77",
494
+ "source_project": {
495
+ "id": 9920253,
496
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
497
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
498
+ "path": "rntpc_react-native-orientation-locker"
499
+ },
500
+ "target_project": {
501
+ "id": 4368861,
502
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
503
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
504
+ "path": "rntpc_react-native-orientation-locker"
505
+ }
506
+ },
507
+ {
508
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
509
+ "filename": "example/harmony/build-profile.template.json5",
510
+ "status": "added",
511
+ "additions": 40,
512
+ "deletions": 0,
513
+ "blob_id": "d048cbbb5908138ce147c06cf4ca44d49b1cc100",
514
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/build-profile.template.json5",
515
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/build-profile.template.json5",
516
+ "patch": "@@ -0,0 +1,40 @@\n+{\n+ \"app\": {\n+ \"signingConfigs\": [\n+ ],\n+ \"products\": [\n+ {\n+ \"name\": \"default\",\n+ \"signingConfig\": \"default\",\n+ \"compatibleSdkVersion\": \"5.0.0(12)\",\n+ \"runtimeOS\": \"HarmonyOS\"\n+ }\n+ ],\n+ \"buildModeSet\": [\n+ {\n+ \"name\": \"debug\",\n+ },\n+ {\n+ \"name\": \"release\"\n+ }\n+ ]\n+ },\n+ \"modules\": [\n+ {\n+ \"name\": \"entry\",\n+ \"srcPath\": \"./entry\",\n+ \"targets\": [\n+ {\n+ \"name\": \"default\",\n+ \"applyToProducts\": [\n+ \"default\"\n+ ]\n+ }\n+ ]\n+ },\n+ {\n+ name: 'orientation_locker',\n+ srcPath: '../../harmony/orientation_locker',\n+ }\n+ ]\n+}\n\\n",
517
+ "target_branch": "br_rnoh0.77",
518
+ "source_branch": "br_rnoh0.77",
519
+ "source_project": {
520
+ "id": 9920253,
521
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
522
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
523
+ "path": "rntpc_react-native-orientation-locker"
524
+ },
525
+ "target_project": {
526
+ "id": 4368861,
527
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
528
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
529
+ "path": "rntpc_react-native-orientation-locker"
530
+ }
531
+ },
532
+ {
533
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
534
+ "filename": "example/harmony/codelinter.json",
535
+ "status": "added",
536
+ "additions": 32,
537
+ "deletions": 0,
538
+ "blob_id": "e7f91acb037aeda939967a042f16033f4c6e21b9",
539
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/codelinter.json",
540
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/codelinter.json",
541
+ "patch": "@@ -0,0 +1,32 @@\n+{\n+ \"files\": [\"**/*.ts\", \"**/*.ets\"],\n+ \"ignore\": [\n+ \"**/ohosTest/**/*\",\n+ \"**/node_modules/**/*\",\n+ \"**/hvigorfile.ts\",\n+ \"**/node_modules/**/*\",\n+ \"**/oh_modules/**/*\",\n+ \"**/build/**/*\",\n+ \"**/.preview/**/*\"\n+ ],\n+ \"plugins\": [\"@typescript-eslint\"],\n+ \"ruleSet\": [],\n+ \"rules\": {\n+ \"@typescript-eslint/await-thenable\": \"warn\",\n+ \"@typescript-eslint/consistent-type-imports\": \"warn\",\n+ \"@typescript-eslint/explicit-function-return-type\": \"warn\",\n+ \"@typescript-eslint/explicit-module-boundary-types\": \"warn\",\n+ \"@typescript-eslint/no-dynamic-delete\": \"warn\",\n+ \"@typescript-eslint/no-explicit-any\": \"warn\",\n+ \"@typescript-eslint/no-for-in-array\": \"warn\",\n+ \"@typescript-eslint/no-this-alias\": \"warn\",\n+ \"@typescript-eslint/no-unnecessary-type-constraint\": \"warn\",\n+ \"@typescript-eslint/no-unsafe-argument\": \"warn\",\n+ \"@typescript-eslint/no-unsafe-assignment\": \"warn\",\n+ \"@typescript-eslint/no-unsafe-call\": \"warn\",\n+ \"@typescript-eslint/no-unsafe-member-access\": \"warn\",\n+ \"@typescript-eslint/no-unsafe-return\": \"warn\",\n+ \"@typescript-eslint/prefer-literal-enum-member\": \"warn\"\n+ },\n+ \"overrides\": []\n+}\n",
542
+ "target_branch": "br_rnoh0.77",
543
+ "source_branch": "br_rnoh0.77",
544
+ "source_project": {
545
+ "id": 9920253,
546
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
547
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
548
+ "path": "rntpc_react-native-orientation-locker"
549
+ },
550
+ "target_project": {
551
+ "id": 4368861,
552
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
553
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
554
+ "path": "rntpc_react-native-orientation-locker"
555
+ }
556
+ },
557
+ {
558
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
559
+ "filename": "example/harmony/entry/.gitignore",
560
+ "status": "added",
561
+ "additions": 7,
562
+ "deletions": 0,
563
+ "blob_id": "bbc049cfeb689c61d6c2922810f652cbb19aad21",
564
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/.gitignore",
565
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/.gitignore",
566
+ "patch": "@@ -0,0 +1,7 @@\n+/node_modules\n+/.preview\n+/build\n+/.cxx\n+package-lock.json\n+/oh_modules\n+/assets\n",
567
+ "target_branch": "br_rnoh0.77",
568
+ "source_branch": "br_rnoh0.77",
569
+ "source_project": {
570
+ "id": 9920253,
571
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
572
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
573
+ "path": "rntpc_react-native-orientation-locker"
574
+ },
575
+ "target_project": {
576
+ "id": 4368861,
577
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
578
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
579
+ "path": "rntpc_react-native-orientation-locker"
580
+ }
581
+ },
582
+ {
583
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
584
+ "filename": "example/harmony/entry/build-profile.json5",
585
+ "status": "added",
586
+ "additions": 21,
587
+ "deletions": 0,
588
+ "blob_id": "c7dfe66d23da874dda6a8b3fe0d4518e30b1adb3",
589
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/build-profile.json5",
590
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/build-profile.json5",
591
+ "patch": "@@ -0,0 +1,21 @@\n+{\n+ \"apiType\": 'stageMode',\n+ \"buildOption\": {\n+ \"externalNativeOptions\": {\n+ \"path\": \"./src/main/cpp/CMakeLists.txt\",\n+ \"arguments\": \"\",\n+ \"cppFlags\": \"-s\",\n+ \"abiFilters\": [\n+ \"arm64-v8a\"\n+ ]\n+ }\n+ },\n+ \"targets\": [\n+ {\n+ \"name\": \"default\",\n+ },\n+ {\n+ \"name\": \"ohosTest\",\n+ }\n+ ]\n+}\n\\n",
592
+ "target_branch": "br_rnoh0.77",
593
+ "source_branch": "br_rnoh0.77",
594
+ "source_project": {
595
+ "id": 9920253,
596
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
597
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
598
+ "path": "rntpc_react-native-orientation-locker"
599
+ },
600
+ "target_project": {
601
+ "id": 4368861,
602
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
603
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
604
+ "path": "rntpc_react-native-orientation-locker"
605
+ }
606
+ },
607
+ {
608
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
609
+ "filename": "example/harmony/entry/hvigorfile.ts",
610
+ "status": "added",
611
+ "additions": 8,
612
+ "deletions": 0,
613
+ "blob_id": "b56e312a0678edd7005549245f0c148b446b750b",
614
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/hvigorfile.ts",
615
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/hvigorfile.ts",
616
+ "patch": "@@ -0,0 +1,8 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently.\n+export { hapTasks } from '@ohos/hvigor-ohos-plugin';\n",
617
+ "target_branch": "br_rnoh0.77",
618
+ "source_branch": "br_rnoh0.77",
619
+ "source_project": {
620
+ "id": 9920253,
621
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
622
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
623
+ "path": "rntpc_react-native-orientation-locker"
624
+ },
625
+ "target_project": {
626
+ "id": 4368861,
627
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
628
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
629
+ "path": "rntpc_react-native-orientation-locker"
630
+ }
631
+ },
632
+ {
633
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
634
+ "filename": "example/harmony/entry/oh-package.json5",
635
+ "status": "added",
636
+ "additions": 11,
637
+ "deletions": 0,
638
+ "blob_id": "85c9a6ab40a8353c49e22ac9eddf880b204d7c31",
639
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/oh-package.json5",
640
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/oh-package.json5",
641
+ "patch": "@@ -0,0 +1,11 @@\n+{\n+ \"license\": \"ISC\",\n+ \"devDependencies\": {},\n+ \"name\": \"entry\",\n+ \"description\": \"example description\",\n+ \"version\": \"1.0.0\",\n+ \"dependencies\": {\n+ \"@rnoh/react-native-openharmony\": \"file:../../node_modules/react-native-harmony/harmony/react_native_openharmony.har\",\n+ \"@react-native-ohos/react-native-orientation-locker\": \"file:../../node_modules/@react-native-ohos/react-native-orientation-locker/harmony/orientation_locker.har\"\n+ }\n+}\n\\n",
642
+ "target_branch": "br_rnoh0.77",
643
+ "source_branch": "br_rnoh0.77",
644
+ "source_project": {
645
+ "id": 9920253,
646
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
647
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
648
+ "path": "rntpc_react-native-orientation-locker"
649
+ },
650
+ "target_project": {
651
+ "id": 4368861,
652
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
653
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
654
+ "path": "rntpc_react-native-orientation-locker"
655
+ }
656
+ },
657
+ {
658
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
659
+ "filename": "example/harmony/entry/src/main/cpp/.gitignore",
660
+ "status": "added",
661
+ "additions": 2,
662
+ "deletions": 0,
663
+ "blob_id": "881dde5479f322de9db2b2bb98fd94a95f73715e",
664
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/.gitignore",
665
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/.gitignore",
666
+ "patch": "@@ -0,0 +1,2 @@\n+jsbundle.h\n+generated/\n",
667
+ "target_branch": "br_rnoh0.77",
668
+ "source_branch": "br_rnoh0.77",
669
+ "source_project": {
670
+ "id": 9920253,
671
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
672
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
673
+ "path": "rntpc_react-native-orientation-locker"
674
+ },
675
+ "target_project": {
676
+ "id": 4368861,
677
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
678
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
679
+ "path": "rntpc_react-native-orientation-locker"
680
+ }
681
+ },
682
+ {
683
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
684
+ "filename": "example/harmony/entry/src/main/cpp/CMakeLists.txt",
685
+ "status": "added",
686
+ "additions": 38,
687
+ "deletions": 0,
688
+ "blob_id": "a12acb66bac5bd46d238a8885f1dac93e4297789",
689
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/CMakeLists.txt",
690
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/CMakeLists.txt",
691
+ "patch": "@@ -0,0 +1,38 @@\n+project(rnapp)\n+cmake_minimum_required(VERSION 3.4.1)\n+set(CMAKE_SKIP_BUILD_RPATH TRUE)\n+set(RNOH_APP_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\")\n+set(NODE_MODULES \"${CMAKE_CURRENT_SOURCE_DIR}/../../../../../node_modules\")\n+set(OH_MODULE_DIR \"${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules\")\n+set(RNOH_CPP_DIR \"${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules/@rnoh/react-native-openharmony/src/main/cpp\")\n+set(RNOH_GENERATED_DIR \"${CMAKE_CURRENT_SOURCE_DIR}/generated\")\n+set(LOG_VERBOSITY_LEVEL 1)\n+set(CMAKE_ASM_FLAGS \"-Wno-error=unused-command-line-argument -Qunused-arguments\")\n+set(CMAKE_CXX_FLAGS \"-fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -s -fPIE -pie\")\n+set(OH_MODULES \"${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules\")\n+\n+set(WITH_HITRACE_SYSTRACE 1) # for other CMakeLists.txt files to use\n+add_compile_definitions(WITH_HITRACE_SYSTRACE)\n+\n+# (VM) Define a variable and assign it to the current module's cpp directory\n+set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})\n+\n+# Add the Header File directory, including cpp, cpp/include, and tell cmake to find the Header Files introduced by the code here\n+include_directories(${NATIVERENDER_ROOT_PATH}\n+ ${NATIVERENDER_ROOT_PATH}/include)\n+\n+add_subdirectory(\"${RNOH_CPP_DIR}\" ./rn)\n+\n+# RNOH_BEGIN: manual_package_linking_1\n+add_subdirectory(\"${OH_MODULES}/@react-native-ohos/react-native-orientation-locker/src/main/cpp\" ./orientation-locker)\n+# RNOH_END: manual_package_linking_1\n+\n+add_library(rnoh_app SHARED\n+ \"./PackageProvider.cpp\"\n+ \"${RNOH_CPP_DIR}/RNOHAppNapiBridge.cpp\"\n+)\n+target_link_libraries(rnoh_app PUBLIC rnoh)\n+\n+# RNOH_BEGIN: manual_package_linking_2\n+target_link_libraries(rnoh_app PUBLIC rnoh_orientation_locker)\n+# RNOH_END: manual_package_linking_2\n",
692
+ "target_branch": "br_rnoh0.77",
693
+ "source_branch": "br_rnoh0.77",
694
+ "source_project": {
695
+ "id": 9920253,
696
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
697
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
698
+ "path": "rntpc_react-native-orientation-locker"
699
+ },
700
+ "target_project": {
701
+ "id": 4368861,
702
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
703
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
704
+ "path": "rntpc_react-native-orientation-locker"
705
+ }
706
+ },
707
+ {
708
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
709
+ "filename": "example/harmony/entry/src/main/cpp/PackageProvider.cpp",
710
+ "status": "added",
711
+ "additions": 15,
712
+ "deletions": 0,
713
+ "blob_id": "5104e8254e8c93d7680b5da9def786ee6bbc8800",
714
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/PackageProvider.cpp",
715
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/cpp/PackageProvider.cpp",
716
+ "patch": "@@ -0,0 +1,15 @@\n+// Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+// Use of this source code is governed by a MIT license that can be\n+// found in the LICENSE file.\n+\n+#include \"RNOH/PackageProvider.h\"\n+#include \"OrientationLockerPackage.h\"\n+\n+using namespace rnoh;\n+\n+std::vector<std::shared_ptr<Package>> PackageProvider::getPackages(Package::Context ctx)\n+{\n+ return {\n+ std::make_shared<OrientationLockerPackage>(ctx),\n+ };\n+}\n\\n",
717
+ "target_branch": "br_rnoh0.77",
718
+ "source_branch": "br_rnoh0.77",
719
+ "source_project": {
720
+ "id": 9920253,
721
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
722
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
723
+ "path": "rntpc_react-native-orientation-locker"
724
+ },
725
+ "target_project": {
726
+ "id": 4368861,
727
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
728
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
729
+ "path": "rntpc_react-native-orientation-locker"
730
+ }
731
+ },
732
+ {
733
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
734
+ "filename": "example/harmony/entry/src/main/ets/RNPackagesFactory.ets",
735
+ "status": "added",
736
+ "additions": 15,
737
+ "deletions": 0,
738
+ "blob_id": "42976ae171623e08ce88b8ed3447f41018018798",
739
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/RNPackagesFactory.ets",
740
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/RNPackagesFactory.ets",
741
+ "patch": "@@ -0,0 +1,15 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+\n+import type {RNPackageContext, RNPackage} from '@rnoh/react-native-openharmony/ts';\n+import { RNOrientationLockerPackage } from \"@react-native-ohos/react-native-orientation-locker/ts\";\n+\n+export function createRNPackages(ctx: RNPackageContext): RNPackage[] {\n+ return [\n+ new RNOrientationLockerPackage(ctx)\n+ ];\n+}\n",
742
+ "target_branch": "br_rnoh0.77",
743
+ "source_branch": "br_rnoh0.77",
744
+ "source_project": {
745
+ "id": 9920253,
746
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
747
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
748
+ "path": "rntpc_react-native-orientation-locker"
749
+ },
750
+ "target_project": {
751
+ "id": 4368861,
752
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
753
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
754
+ "path": "rntpc_react-native-orientation-locker"
755
+ }
756
+ },
757
+ {
758
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
759
+ "filename": "example/harmony/entry/src/main/ets/assets/fonts/Pacifico-Regular.ttf",
760
+ "status": "added",
761
+ "additions": 0,
762
+ "deletions": 0,
763
+ "blob_id": "e7def95d3f44c82086f6e74d93fc0aadac7c454a",
764
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/assets/fonts/Pacifico-Regular.ttf",
765
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/assets/fonts/Pacifico-Regular.ttf",
766
+ "patch": "Binary files no preview for this file type",
767
+ "target_branch": "br_rnoh0.77",
768
+ "source_branch": "br_rnoh0.77",
769
+ "source_project": {
770
+ "id": 9920253,
771
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
772
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
773
+ "path": "rntpc_react-native-orientation-locker"
774
+ },
775
+ "target_project": {
776
+ "id": 4368861,
777
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
778
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
779
+ "path": "rntpc_react-native-orientation-locker"
780
+ }
781
+ },
782
+ {
783
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
784
+ "filename": "example/harmony/entry/src/main/ets/assets/fonts/StintUltraCondensed-Regular.ttf",
785
+ "status": "added",
786
+ "additions": 0,
787
+ "deletions": 0,
788
+ "blob_id": "25c749e167bd5beef18360b13ae660f1c10ebc62",
789
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/assets/fonts/StintUltraCondensed-Regular.ttf",
790
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/assets/fonts/StintUltraCondensed-Regular.ttf",
791
+ "patch": "Binary files no preview for this file type",
792
+ "target_branch": "br_rnoh0.77",
793
+ "source_branch": "br_rnoh0.77",
794
+ "source_project": {
795
+ "id": 9920253,
796
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
797
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
798
+ "path": "rntpc_react-native-orientation-locker"
799
+ },
800
+ "target_project": {
801
+ "id": 4368861,
802
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
803
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
804
+ "path": "rntpc_react-native-orientation-locker"
805
+ }
806
+ },
807
+ {
808
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
809
+ "filename": "example/harmony/entry/src/main/ets/entryability/EntryAbility.ets",
810
+ "status": "added",
811
+ "additions": 27,
812
+ "deletions": 0,
813
+ "blob_id": "8b3bab8c92169005e9b0c90e5e29da693e04c6ef",
814
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/entryability/EntryAbility.ets",
815
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/entryability/EntryAbility.ets",
816
+ "patch": "@@ -0,0 +1,27 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+import {RNAbility} from '@rnoh/react-native-openharmony';\n+import { AbilityConstant, Want } from '@kit.AbilityKit';\n+\n+export default class EntryAbility extends RNAbility {\n+\n+ onCreate(want: Want) {\n+ super.onCreate(want)\n+ this.handleWeChatCallIfNeed(want)\n+ }\n+\n+ getPagePath() {\n+ return 'pages/Index';\n+ }\n+\n+ onNewWant(want: Want, _launchParam: AbilityConstant.LaunchParam): void {\n+ this.handleWeChatCallIfNeed(want)\n+ }\n+\n+ private handleWeChatCallIfNeed(want: Want) {\n+ }\n+}\n",
817
+ "target_branch": "br_rnoh0.77",
818
+ "source_branch": "br_rnoh0.77",
819
+ "source_project": {
820
+ "id": 9920253,
821
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
822
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
823
+ "path": "rntpc_react-native-orientation-locker"
824
+ },
825
+ "target_project": {
826
+ "id": 4368861,
827
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
828
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
829
+ "path": "rntpc_react-native-orientation-locker"
830
+ }
831
+ },
832
+ {
833
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
834
+ "filename": "example/harmony/entry/src/main/ets/pages/Index.ets",
835
+ "status": "added",
836
+ "additions": 113,
837
+ "deletions": 0,
838
+ "blob_id": "39406e6343fadfc1b7c34cf2e4a817e7c4766a05",
839
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/Index.ets",
840
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/Index.ets",
841
+ "patch": "@@ -0,0 +1,113 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+import {\n+ AnyJSBundleProvider,\n+ ComponentBuilderContext,\n+ FileJSBundleProvider,\n+ MetroJSBundleProvider,\n+ ResourceJSBundleProvider,\n+ RNApp,\n+ RNOHErrorDialog,\n+ RNOHLogger,\n+ TraceJSBundleProviderDecorator,\n+ RNOHCoreContext\n+} from '@rnoh/react-native-openharmony';\n+import font from '@ohos.font';\n+import { createRNPackages } from '../RNPackagesFactory';\n+import common from '@ohos.app.ability.common';\n+import BuildProfile from 'BuildProfile';\n+\n+\n+let context = getContext(this) as common.UIAbilityContext;\n+@Builder\n+export function buildCustomRNComponent(ctx: ComponentBuilderContext) {\n+ // There seems to be a problem with the placement of ArkTS components in mixed mode. Nested Stack temporarily avoided.\n+ Stack() {\n+ }\n+ .position({ x: 0, y: 0 })\n+\n+}\n+\n+const wrappedCustomRNComponentBuilder = wrapBuilder(buildCustomRNComponent)\n+\n+/**\n+ * If you want to use custom fonts, you need to register them here.\n+ * We should support react-native-asset to handle registering fonts automatically.\n+ */\n+const fonts: font.FontOptions[] = [\n+ {\n+ familyName: 'Pacifico-Regular',\n+ familySrc: '/assets/fonts/Pacifico-Regular.ttf'\n+ },\n+ {\n+ familyName: 'StintUltraCondensed-Regular',\n+ familySrc: '/assets/fonts/StintUltraCondensed-Regular.ttf'\n+ }\n+]\n+\n+@Entry\n+@Component\n+struct Index {\n+ @StorageLink('RNOHCoreContext') private rnohCoreContext: RNOHCoreContext | undefined = undefined\n+ @State shouldShow: boolean = false\n+ private logger!: RNOHLogger\n+ bundlePath: string = 'bundle.harmony.js'\n+ @State hasBundle: boolean = false\n+\n+ aboutToAppear() {\n+ this.logger = this.rnohCoreContext!.logger.clone(\"Index\")\n+ const stopTracing = this.logger.clone(\"aboutToAppear\").startTracing()\n+ for (const customFont of fonts) {\n+ font.registerFont(customFont)\n+ }\n+ this.shouldShow = true\n+ stopTracing()\n+ }\n+\n+ onBackPress(): boolean | undefined {\n+ // NOTE: this is required since `Ability`'s `onBackPressed` function always\n+ // terminates or puts the app in the background, but we want Ark to ignore it completely\n+ // when handled by RN\n+ this.rnohCoreContext!.dispatchBackPress()\n+ return true\n+ }\n+\n+ build() {\n+ Column() {\n+ if (this.rnohCoreContext && this.shouldShow) {\n+ if (this.rnohCoreContext?.isDebugModeEnabled) {\n+ RNOHErrorDialog({ ctx: this.rnohCoreContext })\n+ }\n+ RNApp({\n+ rnInstanceConfig: {\n+ createRNPackages,\n+ enableNDKTextMeasuring: true,\n+ enableBackgroundExecutor: false,\n+ enableCAPIArchitecture: true,\n+ arkTsComponentNames: [],\n+ },\n+ initialProps: { \"foo\": \"bar\" } as Record<string, string>,\n+ appKey: \"app_name\",\n+ wrappedCustomRNComponentBuilder: wrappedCustomRNComponentBuilder,\n+ onSetUp: (rnInstance) => {\n+ rnInstance.enableFeatureFlag(\"ENABLE_RN_INSTANCE_CLEAN_UP\")\n+ },\n+ jsBundleProvider: new TraceJSBundleProviderDecorator(\n+ new AnyJSBundleProvider([\n+ new MetroJSBundleProvider(),\n+ new FileJSBundleProvider(context.filesDir + '/Bundles/' + this.bundlePath),\n+ new ResourceJSBundleProvider(this.rnohCoreContext.uiAbilityContext.resourceManager, 'hermes_bundle.hbc'),\n+ new ResourceJSBundleProvider(this.rnohCoreContext.uiAbilityContext.resourceManager, 'bundle.harmony.js')\n+ ]),\n+ this.rnohCoreContext.logger),\n+ })\n+ }\n+ }\n+ .height('100%')\n+ .width('100%')\n+ }\n+}\n",
842
+ "target_branch": "br_rnoh0.77",
843
+ "source_branch": "br_rnoh0.77",
844
+ "source_project": {
845
+ "id": 9920253,
846
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
847
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
848
+ "path": "rntpc_react-native-orientation-locker"
849
+ },
850
+ "target_project": {
851
+ "id": 4368861,
852
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
853
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
854
+ "path": "rntpc_react-native-orientation-locker"
855
+ }
856
+ },
857
+ {
858
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
859
+ "filename": "example/harmony/entry/src/main/ets/pages/SurfaceDeadlockTest.ets",
860
+ "status": "added",
861
+ "additions": 135,
862
+ "deletions": 0,
863
+ "blob_id": "88e4439681c4981d7ab7e1b87a46653a9e5a9c35",
864
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/SurfaceDeadlockTest.ets",
865
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/SurfaceDeadlockTest.ets",
866
+ "patch": "@@ -0,0 +1,135 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+import { RNInstance, JSBundleProvider, RNAbility, RNSurface } from '@rnoh/react-native-openharmony'\n+import { CustomComponentBuilder } from \"@rnoh/react-native-openharmony/src/main/ets/RNOHCorePackage\"\n+import { SurfaceConfig2 } from '@rnoh/react-native-openharmony/src/main/ets/RNSurface'\n+\n+\n+@Component\n+export struct SurfaceDeadlockTest {\n+ public jsBundleProvider: JSBundleProvider | undefined = undefined\n+ public appKeys: string[] = []\n+ public numberOfIterations: number = 1\n+ @BuilderParam public buildCustomComponent!: CustomComponentBuilder\n+ // -------------------------------------------------------------------------------------------------------------------\n+ @StorageLink('RNAbility') private rnAbility: RNAbility = {} as RNAbility\n+ private rnInstance!: RNInstance\n+ @State private shouldShow: boolean = false\n+ private shouldDestroyRNInstance: boolean = false\n+ private cleanUpCallbacks: (() => void)[] = []\n+\n+ aboutToAppear() {\n+ this.getOrCreateRNInstance().then(rnInstance => {\n+ this.rnInstance = rnInstance\n+ const jsBundleExecutionStatus = this.rnInstance.getBundleExecutionStatus(this.jsBundleProvider?.getURL())\n+ if (this.jsBundleProvider && jsBundleExecutionStatus === undefined) {\n+ this.rnInstance.runJSBundle(this.jsBundleProvider).then(() => {\n+ this.shouldShow = true\n+ })\n+ return;\n+ }\n+ }).catch((reason: string | Error) => {\n+ if (typeof reason === \"string\")\n+ this.rnAbility.getLogger().error(reason)\n+ else if (reason instanceof Error) {\n+ this.rnAbility.getLogger().error(reason.message)\n+ } else {\n+ this.rnAbility.getLogger().error(\"Fatal exception\")\n+ }\n+ })\n+ }\n+\n+ aboutToDisappear() {\n+ if (this.shouldDestroyRNInstance)\n+ this.rnAbility.destroyAndUnregisterRNInstance(this.rnInstance)\n+ this.cleanUpCallbacks.forEach(cleanUp => cleanUp())\n+ }\n+\n+ private getOrCreateRNInstance(): Promise<RNInstance> {\n+ return this.rnAbility.createAndRegisterRNInstance({ createRNPackages: () => [] })\n+ }\n+\n+ build() {\n+ Stack() {\n+ if (this.shouldShow) {\n+ ForEach(this.appKeys, (appKey: string, idx) => {\n+ Stack() {\n+ Blinker({\n+ minDelayInMs: 1000,\n+ maxDelayInMs: 2000,\n+ blinksCount: this.numberOfIterations,\n+ randomnessPrecisionInMs: 500\n+ }) {\n+ RNSurface({\n+ ctx: this.rnAbility.createRNOHContext({ rnInstance: this.rnInstance }),\n+ surfaceConfig: {\n+ initialProps: {},\n+ appKey: appKey,\n+ } as SurfaceConfig2,\n+ buildCustomComponent: this.buildCustomComponent,\n+ })\n+ }\n+ }.height(`${100 / this.appKeys.length}%`)\n+ .position({ x: 0, y: `${(idx / this.appKeys.length) * 100}%` })\n+ })\n+ }\n+ }.width(\"100%\")\n+ .height(\"100%\")\n+ }\n+}\n+\n+\n+@Component\n+struct Blinker {\n+ public minDelayInMs: number = 0\n+ public maxDelayInMs: number = 1000\n+ public blinksCount: number = 0\n+ public randomnessPrecisionInMs: number = 250\n+ @BuilderParam public renderChildren: () => void\n+ private currentBlinksCount = 0\n+ @State private isVisible: boolean = false\n+ private timeout: number = 0\n+\n+ aboutToAppear() {\n+ this.blink(this.minDelayInMs)\n+ }\n+\n+ aboutToDisappear() {\n+ clearTimeout(this.timeout)\n+ }\n+\n+ private blink(ms: number) {\n+ this.isVisible = !this.isVisible\n+ this.currentBlinksCount += 1\n+ if (this.currentBlinksCount >= this.blinksCount) {\n+ if (this.timeout) {\n+ clearTimeout(this.timeout)\n+ }\n+ this.isVisible = true\n+ return;\n+ }\n+ this.timeout = setTimeout(() => {\n+ this.blink(this.getNextDelay())\n+ }, ms)\n+ }\n+\n+ private getNextDelay(): number {\n+ return ((Math.floor(Math.random() * (Number.MAX_VALUE / this.randomnessPrecisionInMs)) * this.randomnessPrecisionInMs) % this.maxDelayInMs) + this.minDelayInMs\n+ }\n+\n+ build() {\n+ Stack() {\n+ if (this.isVisible) {\n+ this.renderChildren()\n+ }\n+ }\n+ }\n+}\n+\n+\n+\n+\n+\n",
867
+ "target_branch": "br_rnoh0.77",
868
+ "source_branch": "br_rnoh0.77",
869
+ "source_project": {
870
+ "id": 9920253,
871
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
872
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
873
+ "path": "rntpc_react-native-orientation-locker"
874
+ },
875
+ "target_project": {
876
+ "id": 4368861,
877
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
878
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
879
+ "path": "rntpc_react-native-orientation-locker"
880
+ }
881
+ },
882
+ {
883
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
884
+ "filename": "example/harmony/entry/src/main/ets/pages/TouchDisplayer.ets",
885
+ "status": "added",
886
+ "additions": 44,
887
+ "deletions": 0,
888
+ "blob_id": "4ab4f43ed078a227fba8eba9e1c592c3c0bcce79",
889
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/TouchDisplayer.ets",
890
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/ets/pages/TouchDisplayer.ets",
891
+ "patch": "@@ -0,0 +1,44 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+\n+@Component\n+export struct TouchDisplayer {\n+ @State currentTouches: TouchObject[] = []\n+ @State touchIndicatorOpacity: number = 0\n+ @BuilderParam buildChildren: () => void\n+ build() {\n+ Stack() {\n+ this.buildChildren()\n+ ForEach(this.currentTouches, (activeTouch: TouchObject) => {\n+ Stack() {\n+ }\n+ .width(64)\n+ .height(64)\n+ .backgroundColor(\"blue\")\n+ .borderWidth(2)\n+ .borderColor(\"white\")\n+ .opacity(this.touchIndicatorOpacity)\n+ .position({ x: activeTouch.x - 32, y: activeTouch.y - 32 })\n+ .borderRadius(1000)\n+ .hitTestBehavior(HitTestMode.Transparent)\n+ })\n+ }\n+ .width(\"100%\")\n+ .height(\"100%\")\n+ .hitTestBehavior(HitTestMode.Transparent)\n+ .onTouch(e => {\n+ this.currentTouches = e.touches\n+ this.touchIndicatorOpacity = 0.5\n+ animateTo({\n+ duration: 500,\n+ curve: Curve.Linear,\n+ }, () => {\n+ this.touchIndicatorOpacity = 0\n+ })\n+ })\n+ }\n+}\n\\n",
892
+ "target_branch": "br_rnoh0.77",
893
+ "source_branch": "br_rnoh0.77",
894
+ "source_project": {
895
+ "id": 9920253,
896
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
897
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
898
+ "path": "rntpc_react-native-orientation-locker"
899
+ },
900
+ "target_project": {
901
+ "id": 4368861,
902
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
903
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
904
+ "path": "rntpc_react-native-orientation-locker"
905
+ }
906
+ },
907
+ {
908
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
909
+ "filename": "example/harmony/entry/src/main/module.json5",
910
+ "status": "added",
911
+ "additions": 52,
912
+ "deletions": 0,
913
+ "blob_id": "c7700c2c5f348cd7d73ed4cf3b8d7112a46295b9",
914
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/module.json5",
915
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/module.json5",
916
+ "patch": "@@ -0,0 +1,52 @@\n+{\n+ \"module\": {\n+ \"name\": \"entry\",\n+ \"type\": \"entry\",\n+ \"description\": \"$string:module_desc\",\n+ \"mainElement\": \"EntryAbility\",\n+ \"deviceTypes\": [\n+ \"default\"\n+ ],\n+ \"querySchemes\": [\n+ \"weixin\",\n+ ],\n+ \"deliveryWithInstall\": true,\n+ \"installationFree\": false,\n+ \"pages\": \"$profile:main_pages\",\n+ // below property is supported from 5.0.0 - it is needed by bundleManager.canOpenLink to check if the app can open some url\n+ // \"querySchemes\": [\"maps\", \"http\", \"https\", \"customDomain\"],\n+ \"requestPermissions\": [\n+ {\n+ \"name\": \"ohos.permission.INTERNET\"\n+ },\n+ ],\n+ \"metadata\": [\n+ {\n+ \"name\": \"OPTLazyForEach\",\n+ \"value\": \"true\",\n+ }\n+ ],\n+ \"abilities\": [\n+ {\n+ \"name\": \"EntryAbility\",\n+ \"srcEntry\": \"./ets/entryability/EntryAbility.ets\",\n+ \"description\": \"$string:EntryAbility_desc\",\n+ \"icon\": \"$media:icon\",\n+ \"label\": \"$string:EntryAbility_label\",\n+ \"startWindowIcon\": \"$media:icon\",\n+ \"startWindowBackground\": \"$color:start_window_background\",\n+ \"visible\": true,\n+ \"skills\": [\n+ {\n+ \"entities\": [\n+ \"entity.system.home\"\n+ ],\n+ \"actions\": [\n+ \"action.system.home\"\n+ ]\n+ }\n+ ]\n+ }\n+ ]\n+ }\n+}\n\\n",
917
+ "target_branch": "br_rnoh0.77",
918
+ "source_branch": "br_rnoh0.77",
919
+ "source_project": {
920
+ "id": 9920253,
921
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
922
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
923
+ "path": "rntpc_react-native-orientation-locker"
924
+ },
925
+ "target_project": {
926
+ "id": 4368861,
927
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
928
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
929
+ "path": "rntpc_react-native-orientation-locker"
930
+ }
931
+ },
932
+ {
933
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
934
+ "filename": "example/harmony/entry/src/main/resources/.gitignore",
935
+ "status": "added",
936
+ "additions": 1,
937
+ "deletions": 0,
938
+ "blob_id": "037cea9e70bef8c906560a871a394f748ec2325d",
939
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/.gitignore",
940
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/.gitignore",
941
+ "patch": "@@ -0,0 +1 @@\n+rawfile/assets\n",
942
+ "target_branch": "br_rnoh0.77",
943
+ "source_branch": "br_rnoh0.77",
944
+ "source_project": {
945
+ "id": 9920253,
946
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
947
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
948
+ "path": "rntpc_react-native-orientation-locker"
949
+ },
950
+ "target_project": {
951
+ "id": 4368861,
952
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
953
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
954
+ "path": "rntpc_react-native-orientation-locker"
955
+ }
956
+ },
957
+ {
958
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
959
+ "filename": "example/harmony/entry/src/main/resources/base/element/color.json",
960
+ "status": "added",
961
+ "additions": 8,
962
+ "deletions": 0,
963
+ "blob_id": "3c712962da3c2751c2b9ddb53559afcbd2b54a02",
964
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/element/color.json",
965
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/element/color.json",
966
+ "patch": "@@ -0,0 +1,8 @@\n+{\n+ \"color\": [\n+ {\n+ \"name\": \"start_window_background\",\n+ \"value\": \"#FFFFFF\"\n+ }\n+ ]\n+}\n\\n",
967
+ "target_branch": "br_rnoh0.77",
968
+ "source_branch": "br_rnoh0.77",
969
+ "source_project": {
970
+ "id": 9920253,
971
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
972
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
973
+ "path": "rntpc_react-native-orientation-locker"
974
+ },
975
+ "target_project": {
976
+ "id": 4368861,
977
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
978
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
979
+ "path": "rntpc_react-native-orientation-locker"
980
+ }
981
+ },
982
+ {
983
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
984
+ "filename": "example/harmony/entry/src/main/resources/base/element/string.json",
985
+ "status": "added",
986
+ "additions": 16,
987
+ "deletions": 0,
988
+ "blob_id": "074b2173f51352f71629252715526554911d44bb",
989
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/element/string.json",
990
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/element/string.json",
991
+ "patch": "@@ -0,0 +1,16 @@\n+{\n+ \"string\": [\n+ {\n+ \"name\": \"module_desc\",\n+ \"value\": \"module description\"\n+ },\n+ {\n+ \"name\": \"EntryAbility_desc\",\n+ \"value\": \"description\"\n+ },\n+ {\n+ \"name\": \"EntryAbility_label\",\n+ \"value\": \"RN Tester\"\n+ }\n+ ]\n+}\n\\n",
992
+ "target_branch": "br_rnoh0.77",
993
+ "source_branch": "br_rnoh0.77",
994
+ "source_project": {
995
+ "id": 9920253,
996
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
997
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
998
+ "path": "rntpc_react-native-orientation-locker"
999
+ },
1000
+ "target_project": {
1001
+ "id": 4368861,
1002
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1003
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1004
+ "path": "rntpc_react-native-orientation-locker"
1005
+ }
1006
+ },
1007
+ {
1008
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1009
+ "filename": "example/harmony/entry/src/main/resources/base/media/icon.png",
1010
+ "status": "added",
1011
+ "additions": 0,
1012
+ "deletions": 0,
1013
+ "blob_id": "c0f05abe7eb110a3c4958a48f71ea15b28bae5d3",
1014
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/media/icon.png",
1015
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/media/icon.png",
1016
+ "patch": "Binary files no preview for this file type",
1017
+ "target_branch": "br_rnoh0.77",
1018
+ "source_branch": "br_rnoh0.77",
1019
+ "source_project": {
1020
+ "id": 9920253,
1021
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1022
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1023
+ "path": "rntpc_react-native-orientation-locker"
1024
+ },
1025
+ "target_project": {
1026
+ "id": 4368861,
1027
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1028
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1029
+ "path": "rntpc_react-native-orientation-locker"
1030
+ }
1031
+ },
1032
+ {
1033
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1034
+ "filename": "example/harmony/entry/src/main/resources/base/profile/main_pages.json",
1035
+ "status": "added",
1036
+ "additions": 5,
1037
+ "deletions": 0,
1038
+ "blob_id": "1898d94f58d6128ab712be2c68acc7c98e9ab9ce",
1039
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/profile/main_pages.json",
1040
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/base/profile/main_pages.json",
1041
+ "patch": "@@ -0,0 +1,5 @@\n+{\n+ \"src\": [\n+ \"pages/Index\"\n+ ]\n+}\n",
1042
+ "target_branch": "br_rnoh0.77",
1043
+ "source_branch": "br_rnoh0.77",
1044
+ "source_project": {
1045
+ "id": 9920253,
1046
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1047
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1048
+ "path": "rntpc_react-native-orientation-locker"
1049
+ },
1050
+ "target_project": {
1051
+ "id": 4368861,
1052
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1053
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1054
+ "path": "rntpc_react-native-orientation-locker"
1055
+ }
1056
+ },
1057
+ {
1058
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1059
+ "filename": "example/harmony/entry/src/main/resources/rawfile/1.txt",
1060
+ "status": "added",
1061
+ "additions": 1,
1062
+ "deletions": 0,
1063
+ "blob_id": "71f6ee3dfcd13fad21fc73e697c7c5a3c31ec039",
1064
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/rawfile/1.txt",
1065
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/entry/src/main/resources/rawfile/1.txt",
1066
+ "patch": "@@ -0,0 +1 @@\n+text test\n\\n",
1067
+ "target_branch": "br_rnoh0.77",
1068
+ "source_branch": "br_rnoh0.77",
1069
+ "source_project": {
1070
+ "id": 9920253,
1071
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1072
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1073
+ "path": "rntpc_react-native-orientation-locker"
1074
+ },
1075
+ "target_project": {
1076
+ "id": 4368861,
1077
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1078
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1079
+ "path": "rntpc_react-native-orientation-locker"
1080
+ }
1081
+ },
1082
+ {
1083
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1084
+ "filename": "example/harmony/format.ps1",
1085
+ "status": "added",
1086
+ "additions": 18,
1087
+ "deletions": 0,
1088
+ "blob_id": "3ee87d2fe090fd96667c59071d377c2a5f1d411b",
1089
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/format.ps1",
1090
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/format.ps1",
1091
+ "patch": "@@ -0,0 +1,18 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+$directoryPath = Split-Path -Parent $MyInvocation.MyCommand.Path\n+$filePaths = Get-ChildItem $directoryPath -Recurse -Include *.h, *.cpp |\n+Where-Object {\n+ $_.DirectoryName -notmatch 'third-party' -and\n+ $_.DirectoryName -notmatch 'patches' -and\n+ $_.DirectoryName -notmatch 'node_modules' -and\n+ $_.DirectoryName -notmatch '.cxx' -and\n+ $_.DirectoryName -notmatch 'build'\n+}\n+foreach ($filePath in $filePaths) {\n+ & \"clang-format.exe\" -style=file -i $filePath.FullName\n+}\n\\n",
1092
+ "target_branch": "br_rnoh0.77",
1093
+ "source_branch": "br_rnoh0.77",
1094
+ "source_project": {
1095
+ "id": 9920253,
1096
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1097
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1098
+ "path": "rntpc_react-native-orientation-locker"
1099
+ },
1100
+ "target_project": {
1101
+ "id": 4368861,
1102
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1103
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1104
+ "path": "rntpc_react-native-orientation-locker"
1105
+ }
1106
+ },
1107
+ {
1108
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1109
+ "filename": "example/harmony/hvigor/.gitignore",
1110
+ "status": "added",
1111
+ "additions": 1,
1112
+ "deletions": 0,
1113
+ "blob_id": "aa1ec1ea0618124672d14a63d00d943240f2db2a",
1114
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigor/.gitignore",
1115
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigor/.gitignore",
1116
+ "patch": "@@ -0,0 +1 @@\n+*.tgz\n",
1117
+ "target_branch": "br_rnoh0.77",
1118
+ "source_branch": "br_rnoh0.77",
1119
+ "source_project": {
1120
+ "id": 9920253,
1121
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1122
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1123
+ "path": "rntpc_react-native-orientation-locker"
1124
+ },
1125
+ "target_project": {
1126
+ "id": 4368861,
1127
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1128
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1129
+ "path": "rntpc_react-native-orientation-locker"
1130
+ }
1131
+ },
1132
+ {
1133
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1134
+ "filename": "example/harmony/hvigor/hvigor-config.json5",
1135
+ "status": "added",
1136
+ "additions": 21,
1137
+ "deletions": 0,
1138
+ "blob_id": "c8ba182673e80fbc3da9e614580e9453b718cd3b",
1139
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigor/hvigor-config.json5",
1140
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigor/hvigor-config.json5",
1141
+ "patch": "@@ -0,0 +1,21 @@\n+{\n+ \"modelVersion\": \"5.0.0\",\n+ \"dependencies\": {\n+ },\n+ \"execution\": {\n+ // \"analyze\": \"default\", /* Define the build analyze mode. Value: [ \"default\" | \"verbose\" | false ]. Default: \"default\" */\n+ // \"daemon\": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */\n+ // \"incremental\": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */\n+ // \"parallel\": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */\n+ // \"typeCheck\": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */\n+ },\n+ \"logging\": {\n+ // \"level\": \"info\" /* Define the log level. Value: [ \"debug\" | \"info\" | \"warn\" | \"error\" ]. Default: \"info\" */\n+ },\n+ \"debugging\": {\n+ \"stacktrace\": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */\n+ },\n+ \"nodeOptions\": {\n+ // \"maxOldSpaceSize\": 4096 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process */\n+ }\n+}\n\\n",
1142
+ "target_branch": "br_rnoh0.77",
1143
+ "source_branch": "br_rnoh0.77",
1144
+ "source_project": {
1145
+ "id": 9920253,
1146
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1147
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1148
+ "path": "rntpc_react-native-orientation-locker"
1149
+ },
1150
+ "target_project": {
1151
+ "id": 4368861,
1152
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1153
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1154
+ "path": "rntpc_react-native-orientation-locker"
1155
+ }
1156
+ },
1157
+ {
1158
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1159
+ "filename": "example/harmony/hvigorfile.ts",
1160
+ "status": "added",
1161
+ "additions": 6,
1162
+ "deletions": 0,
1163
+ "blob_id": "47113e2e36ecefde41c136272a0bd6ff745cffe4",
1164
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigorfile.ts",
1165
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/hvigorfile.ts",
1166
+ "patch": "@@ -0,0 +1,6 @@\n+import { appTasks } from '@ohos/hvigor-ohos-plugin';\n+\n+export default {\n+ system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */\n+ plugins: [] /* Custom plugin to extend the functionality of Hvigor. */\n+}\n\\n",
1167
+ "target_branch": "br_rnoh0.77",
1168
+ "source_branch": "br_rnoh0.77",
1169
+ "source_project": {
1170
+ "id": 9920253,
1171
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1172
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1173
+ "path": "rntpc_react-native-orientation-locker"
1174
+ },
1175
+ "target_project": {
1176
+ "id": 4368861,
1177
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1178
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1179
+ "path": "rntpc_react-native-orientation-locker"
1180
+ }
1181
+ },
1182
+ {
1183
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1184
+ "filename": "example/harmony/oh-package.json5",
1185
+ "status": "added",
1186
+ "additions": 13,
1187
+ "deletions": 0,
1188
+ "blob_id": "bba8863a76695eb3cb1ed6752351b195aa201904",
1189
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/oh-package.json5",
1190
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/harmony/oh-package.json5",
1191
+ "patch": "@@ -0,0 +1,13 @@\n+{\n+ \"modelVersion\": \"5.0.0\",\n+ \"description\": \"Please describe the basic information.\",\n+ \"dependencies\": {\n+ },\n+ \"devDependencies\": {\n+ \"@ohos/hypium\": \"1.0.21\",\n+ \"@ohos/hamock\": \"1.0.0\"\n+ },\n+ \"overrides\": {\n+ '@rnoh/react-native-openharmony': 'file:../node_modules/@react-native-oh/react-native-harmony/react_native_openharmony.har'\n+ }\n+}\n",
1192
+ "target_branch": "br_rnoh0.77",
1193
+ "source_branch": "br_rnoh0.77",
1194
+ "source_project": {
1195
+ "id": 9920253,
1196
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1197
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1198
+ "path": "rntpc_react-native-orientation-locker"
1199
+ },
1200
+ "target_project": {
1201
+ "id": 4368861,
1202
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1203
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1204
+ "path": "rntpc_react-native-orientation-locker"
1205
+ }
1206
+ },
1207
+ {
1208
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1209
+ "filename": "example/index.js",
1210
+ "status": "added",
1211
+ "additions": 11,
1212
+ "deletions": 0,
1213
+ "blob_id": "99731060616282f12875c4d3e734f242d1d80d8b",
1214
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/index.js",
1215
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/index.js",
1216
+ "patch": "@@ -0,0 +1,11 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+import {AppRegistry, View, Text} from 'react-native';\n+import {name as appName} from './app.json';\n+import OrientationLockerExample from './src/OrientationLockerExample';\n+\n+AppRegistry.registerComponent(appName, () => OrientationLockerExample);\n\\n",
1217
+ "target_branch": "br_rnoh0.77",
1218
+ "source_branch": "br_rnoh0.77",
1219
+ "source_project": {
1220
+ "id": 9920253,
1221
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1222
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1223
+ "path": "rntpc_react-native-orientation-locker"
1224
+ },
1225
+ "target_project": {
1226
+ "id": 4368861,
1227
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1228
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1229
+ "path": "rntpc_react-native-orientation-locker"
1230
+ }
1231
+ },
1232
+ {
1233
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1234
+ "filename": "example/jest.config.js",
1235
+ "status": "added",
1236
+ "additions": 11,
1237
+ "deletions": 0,
1238
+ "blob_id": "cde287e65b8097af0464838626e7bbb7ec72c5bb",
1239
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/jest.config.js",
1240
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/jest.config.js",
1241
+ "patch": "@@ -0,0 +1,11 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+/** @type {import('ts-jest').JestConfigWithTsJest} */\n+module.exports = {\n+ preset: 'ts-jest',\n+ testEnvironment: 'node',\n+};\n",
1242
+ "target_branch": "br_rnoh0.77",
1243
+ "source_branch": "br_rnoh0.77",
1244
+ "source_project": {
1245
+ "id": 9920253,
1246
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1247
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1248
+ "path": "rntpc_react-native-orientation-locker"
1249
+ },
1250
+ "target_project": {
1251
+ "id": 4368861,
1252
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1253
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1254
+ "path": "rntpc_react-native-orientation-locker"
1255
+ }
1256
+ },
1257
+ {
1258
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1259
+ "filename": "example/metro.config.js",
1260
+ "status": "added",
1261
+ "additions": 30,
1262
+ "deletions": 0,
1263
+ "blob_id": "13cf47b5d26ebc2955e99fa8caf1372aaebe9bfc",
1264
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/metro.config.js",
1265
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/metro.config.js",
1266
+ "patch": "@@ -0,0 +1,30 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+const {mergeConfig, getDefaultConfig} = require('@react-native/metro-config');\n+const {createHarmonyMetroConfig} = require('@react-native-oh/react-native-harmony/metro.config');\n+\n+/**\n+ * @type {import(\"metro-config\").ConfigT}\n+ */\n+const config = {\n+ transformer: {\n+ getTransformOptions: async () => ({\n+ transform: {\n+ experimentalImportSupport: false,\n+ inlineRequires: true,\n+ },\n+ }),\n+ },\n+};\n+\n+module.exports = mergeConfig(\n+ getDefaultConfig(__dirname),\n+ createHarmonyMetroConfig({\n+ reactNativeHarmonyPackageName: '@react-native-oh/react-native-harmony',\n+ }),\n+ config,\n+);\n",
1267
+ "target_branch": "br_rnoh0.77",
1268
+ "source_branch": "br_rnoh0.77",
1269
+ "source_project": {
1270
+ "id": 9920253,
1271
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1272
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1273
+ "path": "rntpc_react-native-orientation-locker"
1274
+ },
1275
+ "target_project": {
1276
+ "id": 4368861,
1277
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1278
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1279
+ "path": "rntpc_react-native-orientation-locker"
1280
+ }
1281
+ },
1282
+ {
1283
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1284
+ "filename": "example/package.json",
1285
+ "status": "added",
1286
+ "additions": 61,
1287
+ "deletions": 0,
1288
+ "blob_id": "e23058c14f0d342d97734c5c988ad987d5ec21ec",
1289
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/package.json",
1290
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/package.json",
1291
+ "patch": "@@ -0,0 +1,61 @@\n+{\n+ \"name\": \"react-native-harmony-tester\",\n+ \"version\": \"1.0.0\",\n+ \"private\": true,\n+ \"scripts\": {\n+ \"i\": \"cd ../ && npm i && npm run pack && cd ./example && npm i\",\n+ \"reStart\": \"npm run install:pkg && npm run codegen && hdc rport tcp:8081 tcp:8081 && react-native start\",\n+ \"start\": \"hdc rport tcp:8081 tcp:8081 && react-native start\",\n+ \"codegen\": \"react-native codegen-harmony --rnoh-module-path ./harmony/entry/oh_modules/@rnoh/react-native-openharmony\",\n+ \"pack:pkg\": \"cd ../ && npm pack && cd ./example\",\n+ \"install:pkg\": \"npm uninstall @react-native-ohos/react-native-orientation-locker && npm run pack:pkg && npm i @react-native-ohos/react-native-orientation-locker@file:../react-native-ohos-react-native-orientation-locker-1.8.1-beta.2.tgz\",\n+ \"dev\": \"npm run codegen && react-native bundle-harmony --dev --minify=false\",\n+ \"prod\": \"npm run codegen && react-native bundle-harmony --dev=false --minify=true\",\n+ \"postinstall\": \"node ./scripts/create-build-profile\",\n+ \"fast:pkg\": \"cd ../ && npm i --legacy-peer-deps && npm pack && cd ./example && npm i && npm run dev\"\n+ },\n+ \"dependencies\": {\n+ \"@gorhom/portal\": \"^1.0.14\",\n+ \"@react-native-ohos/react-native-orientation-locker\": \"file:../react-native-ohos-react-native-orientation-locker-1.8.1-beta.2.tgz\",\n+ \"react\": \"18.3.1\",\n+ \"react-native\": \"0.77.1\",\n+ \"@react-native-oh/react-native-harmony\": \"npm:@react-native-oh/react-native-harmony@0.77.18-1\",\n+ \"react-native-reanimated\": \"^3.6.0\",\n+ \"@rnoh/testerino\": \"file:./rnoh-testerino-0.0.12.tgz\"\n+ },\n+ \"devDependencies\": {\n+ \"@babel/core\": \"^7.25.2\",\n+ \"@babel/preset-env\": \"^7.25.3\",\n+ \"@babel/runtime\": \"^7.25.0\",\n+ \"@react-native-community/cli\": \"15.0.1\",\n+ \"@react-native-community/cli-platform-android\": \"15.0.1\",\n+ \"@react-native-community/cli-platform-ios\": \"15.0.1\",\n+ \"@react-native-community/eslint-config\": \"^3.2.0\",\n+ \"@react-native/babel-preset\": \"0.77.1\",\n+ \"@react-native/eslint-config\": \"0.77.1\",\n+ \"@react-native/metro-config\": \"^0.77.1\",\n+ \"@react-native/typescript-config\": \"0.77.1\",\n+ \"@rnoh/react-native-harmony-cli\": \"npm:@react-native-oh/react-native-harmony-cli@0.77.18\",\n+ \"@tsconfig/react-native\": \"^3.0.0\",\n+ \"@types/d3-scale-chromatic\": \"^3.0.0\",\n+ \"@types/jest\": \"^29.5.13\",\n+ \"@types/react\": \"^18.2.6\",\n+ \"@types/react-test-renderer\": \"^18.0.0\",\n+ \"babel-jest\": \"^29.6.3\",\n+ \"eslint\": \"^8.19.0\",\n+ \"jest\": \"^29.7.0\",\n+ \"metro-react-native-babel-preset\": \"0.76.8\",\n+ \"prettier\": \"2.8.8\",\n+ \"react-test-renderer\": \"18.3.1\",\n+ \"typescript\": \"5.5.4\"\n+ },\n+ \"overrides\": {\n+ \"@react-native-community/cli\": \"15.0.1\"\n+ },\n+ \"resolutions\": {\n+ \"@react-native-community/cli\": \"15.0.1\"\n+ },\n+ \"engines\": {\n+ \"node\": \">=18\"\n+ }\n+}\n",
1292
+ "target_branch": "br_rnoh0.77",
1293
+ "source_branch": "br_rnoh0.77",
1294
+ "source_project": {
1295
+ "id": 9920253,
1296
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1297
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1298
+ "path": "rntpc_react-native-orientation-locker"
1299
+ },
1300
+ "target_project": {
1301
+ "id": 4368861,
1302
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1303
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1304
+ "path": "rntpc_react-native-orientation-locker"
1305
+ }
1306
+ },
1307
+ {
1308
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1309
+ "filename": "example/react-native.config.js",
1310
+ "status": "added",
1311
+ "additions": 11,
1312
+ "deletions": 0,
1313
+ "blob_id": "057661d2d3895d8797bd5ecd2d9454b80ebb32ee",
1314
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/react-native.config.js",
1315
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/react-native.config.js",
1316
+ "patch": "@@ -0,0 +1,11 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+module.exports = {\n+ project: {\n+ },\n+ assets: ['./assets/fonts/'],\n+};\n",
1317
+ "target_branch": "br_rnoh0.77",
1318
+ "source_branch": "br_rnoh0.77",
1319
+ "source_project": {
1320
+ "id": 9920253,
1321
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1322
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1323
+ "path": "rntpc_react-native-orientation-locker"
1324
+ },
1325
+ "target_project": {
1326
+ "id": 4368861,
1327
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1328
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1329
+ "path": "rntpc_react-native-orientation-locker"
1330
+ }
1331
+ },
1332
+ {
1333
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1334
+ "filename": "example/rnoh-testerino-0.0.12.tgz",
1335
+ "status": "added",
1336
+ "additions": 0,
1337
+ "deletions": 0,
1338
+ "blob_id": "db80fbd340c559ef3b44cd10644a9e35ca863670",
1339
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/rnoh-testerino-0.0.12.tgz",
1340
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/rnoh-testerino-0.0.12.tgz",
1341
+ "patch": "Binary files no preview for this file type",
1342
+ "target_branch": "br_rnoh0.77",
1343
+ "source_branch": "br_rnoh0.77",
1344
+ "source_project": {
1345
+ "id": 9920253,
1346
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1347
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1348
+ "path": "rntpc_react-native-orientation-locker"
1349
+ },
1350
+ "target_project": {
1351
+ "id": 4368861,
1352
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1353
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1354
+ "path": "rntpc_react-native-orientation-locker"
1355
+ }
1356
+ },
1357
+ {
1358
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1359
+ "filename": "example/scripts/create-build-profile.js",
1360
+ "status": "added",
1361
+ "additions": 46,
1362
+ "deletions": 0,
1363
+ "blob_id": "bffa642e8e940bf8bfa222e11e02262f5ed05e22",
1364
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/scripts/create-build-profile.js",
1365
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/scripts/create-build-profile.js",
1366
+ "patch": "@@ -0,0 +1,46 @@\n+/*\n+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved\n+ * Use of this source code is governed by a MIT license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+\n+const fs = require('fs');\n+const JSON5 = require('json5');\n+const path = require('path');\n+\n+const templatePath = path.join(\n+ __dirname,\n+ '..',\n+ 'harmony',\n+ 'build-profile.template.json5',\n+);\n+const existingProfilePath = path.join(\n+ __dirname,\n+ '..',\n+ 'harmony',\n+ 'build-profile.json5',\n+);\n+\n+if (fs.existsSync(existingProfilePath)) {\n+ let existingProfile = JSON5.parse(\n+ fs.readFileSync(existingProfilePath, 'utf-8'),\n+ );\n+ let template = JSON5.parse(fs.readFileSync(templatePath, 'utf-8'));\n+ let signingConfigs =\n+ existingProfile.app && existingProfile.app.signingConfigs;\n+\n+ existingProfile = {...template};\n+\n+ if (signingConfigs) {\n+ existingProfile.app.signingConfigs = signingConfigs;\n+ }\n+\n+ fs.writeFileSync(\n+ existingProfilePath,\n+ JSON5.stringify(existingProfile, null, 2),\n+ );\n+} else {\n+ // File doesn't exist, create a copy from the template\n+ fs.copyFileSync(templatePath, existingProfilePath);\n+}\n\\n",
1367
+ "target_branch": "br_rnoh0.77",
1368
+ "source_branch": "br_rnoh0.77",
1369
+ "source_project": {
1370
+ "id": 9920253,
1371
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1372
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1373
+ "path": "rntpc_react-native-orientation-locker"
1374
+ },
1375
+ "target_project": {
1376
+ "id": 4368861,
1377
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1378
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1379
+ "path": "rntpc_react-native-orientation-locker"
1380
+ }
1381
+ },
1382
+ {
1383
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1384
+ "filename": "example/src/OrientationLockerExample.tsx",
1385
+ "status": "added",
1386
+ "additions": 510,
1387
+ "deletions": 0,
1388
+ "blob_id": "418cff0f566da61bd211b6db20d6035b4058d048",
1389
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/src/OrientationLockerExample.tsx",
1390
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/src/OrientationLockerExample.tsx",
1391
+ "patch": "@@ -0,0 +1,510 @@\n+import Orientation, {\n+ useOrientationChange,\n+ useDeviceOrientationChange,\n+ useLockListener,\n+ OrientationLocker,\n+ UNLOCK,\n+ PORTRAIT,\n+ LANDSCAPE,\n+ LANDSCAPE_LEFT,\n+ LANDSCAPE_RIGHT,\n+ PORTRAIT_UPSIDE_DOWN,\n+ ALL_ORIENTATIONS_BUT_UPSIDE_DOWN,\n+} from 'react-native-orientation-locker';\n+import {\n+ StyleSheet,\n+ Text,\n+ TouchableOpacity,\n+ ScrollView,\n+ View,\n+ Alert,\n+} from 'react-native';\n+import { useEffect, useState, useCallback } from 'react';\n+import { Tester, TestSuite, TestCase } from '@rnoh/testerino';\n+\n+export default function OrientationLockerExample() {\n+ const [orientation, setOrientation] = useState<string>('PORTRAIT');\n+ const updateOrientation = useCallback((orientation: string) => {\n+ setOrientation(orientation);\n+ }, []);\n+ const [LockListener, setLockListener] = useState<string>();\n+ const [isLockedState, setIsLockedState] = useState<string>();\n+ const [initialOrientation, setInitialOrientation] = useState<string>();\n+ const [autoRotateState, setAutoRotateState] = useState<string>();\n+ const [hookOrientation, setHookOrientation] = useState<string>('PORTRAIT');\n+ const [hookDeviceOrientation, setHookDeviceOrientation] = useState<string>('PORTRAIT');\n+ const [hookLockState, setHookLockState] = useState<string>('未触发');\n+ const [lockerOrientation, setLockerOrientation] = useState<string>();\n+ const [lockerDeviceOrientation, setLockerDeviceOrientation] = useState<string>();\n+ const [lockerSelectValue, setLockerSelectValue] = useState<string>(PORTRAIT);\n+ const [configureState, setConfigureState] = useState<string>('disableFaceUpDown: false(已启用)');\n+ const [deviceOrientation, setDeviceOrientation] = useState<string>();\n+\n+ const updateDeviceOrientation = useCallback((orientation: string) => {\n+ setDeviceOrientation(orientation);\n+ }, []);\n+\n+ useEffect(() => {\n+ return () => {\n+ // 退出应用销毁监听\n+ unbindAllListeners();\n+ };\n+ }, []);\n+\n+ const setLockToPortrait = () => {\n+ Orientation.lockToPortrait();\n+ };\n+ const setLockToLandscape = () => {\n+ Orientation.lockToLandscape();\n+ };\n+ const setLockToLandscapeLeft = () => {\n+ Orientation.lockToLandscapeLeft();\n+ };\n+ const setLockToLandscapeRight = () => {\n+ Orientation.lockToLandscapeRight();\n+ };\n+ const unlockAllOrientations = () => {\n+ Orientation.unlockAllOrientations();\n+ };\n+ const lockToPortraitUpsideDown = () => {\n+ Orientation.lockToPortraitUpsideDown();\n+ };\n+ const lockToAllOrientationsButUpsideDown = () => {\n+ Orientation.lockToAllOrientationsButUpsideDown();\n+ };\n+ const bindDeviceOrientationListener = () => {\n+ Orientation.removeDeviceOrientationListener(updateDeviceOrientation);\n+ Orientation.addDeviceOrientationListener(updateDeviceOrientation);\n+ };\n+ const unbindDeviceOrientationListener = () => {\n+ Orientation.removeDeviceOrientationListener(updateDeviceOrientation);\n+ };\n+ const bindOrientationListener = () => {\n+ Orientation.removeOrientationListener(updateOrientation);\n+ Orientation.addOrientationListener(updateOrientation);\n+ };\n+ const unbindOrientationListener = () => {\n+ Orientation.removeOrientationListener(updateOrientation);\n+ };\n+\n+ const lockDidChange = useCallback((o: string) => {\n+ setLockListener(`屏幕锁定状态变化: ${o}`);\n+ }, []);\n+ const bindLockListener = () => {\n+ Orientation.removeLockListener(lockDidChange);\n+ Orientation.addLockListener(lockDidChange);\n+ };\n+\n+ const unbindLockListener = () => {\n+ Orientation.removeLockListener(lockDidChange);\n+ };\n+ const unbindAllListeners = () => {\n+ Orientation.removeAllListeners();\n+ };\n+\n+ const checkIsLocked = () => {\n+ const locked = Orientation.isLocked();\n+ setIsLockedState(locked ? '已锁定' : '未锁定');\n+ };\n+\n+ const checkInitialOrientation = () => {\n+ const initial = Orientation.getInitialOrientation();\n+ setInitialOrientation(initial);\n+ };\n+\n+ const checkAutoRotateState = () => {\n+ Orientation.getAutoRotateState((state: boolean) => {\n+ setAutoRotateState(state ? '已开启' : '已关闭');\n+ });\n+ };\n+\n+ const configureSetting = (value: boolean) => {\n+ Orientation.configure({ disableFaceUpDown: value });\n+ setConfigureState(value ? 'disableFaceUpDown: true(已禁用)' : 'disableFaceUpDown: false(已启用)');\n+ };\n+\n+ // Hooks\n+ useOrientationChange((o: string) => {\n+ setHookOrientation(o);\n+ });\n+\n+ useDeviceOrientationChange((o: string) => {\n+ setHookDeviceOrientation(o);\n+ });\n+\n+ useLockListener((o: string) => {\n+ setHookLockState(o);\n+ Alert.alert('锁定方向变化', `当前锁定方向: ${o}`);\n+ });\n+\n+\n+\n+ return (\n+ <Tester>\n+ <ScrollView style={{ marginBottom: 50 }}>\n+ <TestSuite name=\"orientation\">\n+ <TestCase tags={['C_API']} itShould='当前设备方向为:'>\n+ <Text style={styles.textContent}>{deviceOrientation}</Text>\n+ </TestCase>\n+ <TestCase tags={['C_API']} itShould='当前屏幕方向为:'>\n+ <Text style={styles.textContent}>{orientation}</Text>\n+ </TestCase>\n+ <TestCase tags={['C_API']} itShould='当前屏幕锁定状态为:'>\n+ <Text style={styles.textContent}>{LockListener}</Text>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:添加设备方向监听 (DeviceOrientation)'>\n+ <TouchableOpacity onPress={bindDeviceOrientationListener}>\n+ <Text>点击绑定 DeviceOrientation 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:移除设备方向监听 (DeviceOrientation)'>\n+ <TouchableOpacity onPress={unbindDeviceOrientationListener}>\n+ <Text>点击解绑 DeviceOrientation 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:添加屏幕/UI方向监听 (Orientation)'>\n+ <TouchableOpacity onPress={bindOrientationListener}>\n+ <Text>点击绑定 Orientation 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:移除屏幕/UI方向监听 (Orientation)'>\n+ <TouchableOpacity onPress={unbindOrientationListener}>\n+ <Text>点击解绑 Orientation 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:添加锁定状态监听 (LockListener)'>\n+ <TouchableOpacity onPress={bindLockListener}>\n+ <Text>点击绑定 LockListener 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='监听测试:移除锁定状态监听 (LockListener)'>\n+ <TouchableOpacity onPress={unbindLockListener}>\n+ <Text>点击解绑 LockListener 监听</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='销毁当前组件挂载的全部监听 (removeAllListeners)'>\n+ <TouchableOpacity onPress={unbindAllListeners}>\n+ <Text>点击全部解绑</Text>\n+ </TouchableOpacity>\n+ <Text style={styles.noteText}>注:退出应用时会自动调用,手动调用会解绑所有手动 bind 和 Hooks 挂载的底层监听</Text>\n+ </TestCase>\n+\n+ <TestCase\n+ itShould=\"锁定当前屏幕上下翻转\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ lockToPortraitUpsideDown();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"当前屏幕上下翻转\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定当前屏幕为上下翻转</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).equal('PORTRAIT-UPSIDEDOWN');\n+ }}></TestCase>\n+\n+ <TestCase\n+ itShould=\"锁定当前屏幕为竖屏\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ setLockToPortrait();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"当前屏幕为竖屏\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定当前屏幕为竖屏</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).equal('PORTRAIT');\n+ }}></TestCase>\n+\n+ <TestCase\n+ itShould=\"锁定当前屏幕为横屏\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ setLockToLandscape();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"当前屏幕为横屏\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定当前屏幕为横屏</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).equal('LANDSCAPE-LEFT'); // lockToLandscape() 默认锁定到左横屏\n+ }}></TestCase>\n+ <TestCase\n+ itShould=\"锁定当前屏幕为横屏,右旋转\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ setLockToLandscapeLeft();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"当前屏幕横屏,右旋转\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定当前屏幕为横屏,右旋转</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).equal('LANDSCAPE-LEFT');\n+ }}></TestCase>\n+ <TestCase\n+ itShould=\"锁定当前屏幕为横屏,左旋转\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ setLockToLandscapeRight();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"当前屏幕横屏,左旋转\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定当前屏幕为横屏,左旋转</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).equal('LANDSCAPE-RIGHT');\n+ }}></TestCase>\n+ <TestCase\n+ itShould=\"锁定除了上下翻转的所有方向\"\n+ tags={['C_API']}\n+ initialState={{}}\n+ arrange={({ setState }) => {\n+ return (\n+ <TouchableOpacity\n+ onPress={() => {\n+ lockToAllOrientationsButUpsideDown();\n+ const time = setTimeout(() => {\n+ Orientation.getOrientation(\n+ (orientation: string, err: string) => {\n+ if (orientation) {\n+ setState(orientation);\n+ } else {\n+ console.log(\"锁定除了上下翻转的所有方向\");\n+ }\n+ },\n+ );\n+ }, 50);\n+ }}\n+ style={styles.button}>\n+ <Text>锁定除了上下翻转的所有方向</Text>\n+ </TouchableOpacity>\n+ );\n+ }}\n+ assert={({ expect, state }) => {\n+ expect(state).to.be.a('string');\n+ }}></TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='解锁当前屏幕旋转锁定'>\n+ <TouchableOpacity onPress={() => {\n+ unlockAllOrientations();\n+ }}>\n+ <Text>解锁当前屏幕旋转锁定</Text>\n+ </TouchableOpacity>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='isLocked:查看当前是否处于锁定状态'>\n+ <TouchableOpacity onPress={() => {\n+ checkIsLocked();\n+ }}>\n+ <Text>点击此处查看锁定状态</Text>\n+ </TouchableOpacity>\n+ <Text style={styles.textContent}>{isLockedState}</Text>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='getInitialOrientation:获取应用初始方向'>\n+ <TouchableOpacity onPress={() => {\n+ checkInitialOrientation();\n+ }}>\n+ <Text>点击此处获取初始方向</Text>\n+ </TouchableOpacity>\n+ <Text style={styles.textContent}>{initialOrientation}</Text>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='getAutoRotateState:获取系统自动旋转状态'>\n+ <TouchableOpacity onPress={() => {\n+ checkAutoRotateState();\n+ }}>\n+ <Text>点击此处获取自动旋转状态</Text>\n+ </TouchableOpacity>\n+ <Text style={styles.textContent}>{autoRotateState}</Text>\n+ <Text style={styles.noteText}>注: 读取系统自动旋转开关,开启返回\"已开启\",关闭返回\"已关闭\"</Text>\n+ </TestCase>\n+\n+ <TestCase tags={['C_API']} itShould='configure:配置disableFaceUpDown选项'>\n+ <Text style={styles.textContent}>当前状态: {configureState}</Text>\n+ <TouchableOpacity onPress={() => {\n+ configureSetting(true);\n+ }}>\n+ <Text>configure(disableFaceUpDown: true) - 禁用FACE-UP/DOWN</Text>\n+ </TouchableOpacity>\n+ <TouchableOpacity onPress={() => {\n+ configureSetting(false);\n+ }} style={{ marginTop: 8 }}>\n+ \n... [diff 已截断]",
1392
+ "target_branch": "br_rnoh0.77",
1393
+ "source_branch": "br_rnoh0.77",
1394
+ "source_project": {
1395
+ "id": 9920253,
1396
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1397
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1398
+ "path": "rntpc_react-native-orientation-locker"
1399
+ },
1400
+ "target_project": {
1401
+ "id": 4368861,
1402
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1403
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1404
+ "path": "rntpc_react-native-orientation-locker"
1405
+ }
1406
+ },
1407
+ {
1408
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1409
+ "filename": "example/tsconfig.json",
1410
+ "status": "added",
1411
+ "additions": 14,
1412
+ "deletions": 0,
1413
+ "blob_id": "f224f67deed574dd019f1e6c17e38055adf63f38",
1414
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/tsconfig.json",
1415
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/example/tsconfig.json",
1416
+ "patch": "@@ -0,0 +1,14 @@\n+{\n+ \"extends\": \"@react-native/typescript-config/tsconfig.json\",\n+ \"compilerOptions\": {\n+ \"jsx\": \"react-native\",\n+ \"paths\": {\n+ \"react-native\": [\n+ \"./node_modules/react-native-harmony\"\n+ ],\n+ },\n+ },\n+ \"exclude\": [\n+ \"harmony\"\n+ ]\n+}\n\\n",
1417
+ "target_branch": "br_rnoh0.77",
1418
+ "source_branch": "br_rnoh0.77",
1419
+ "source_project": {
1420
+ "id": 9920253,
1421
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1422
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1423
+ "path": "rntpc_react-native-orientation-locker"
1424
+ },
1425
+ "target_project": {
1426
+ "id": 4368861,
1427
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1428
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1429
+ "path": "rntpc_react-native-orientation-locker"
1430
+ }
1431
+ },
1432
+ {
1433
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1434
+ "filename": "harmony/orientation_locker/src/main/cpp/generated/RNOH/generated/turbo_modules/OreitationLockerNativeModule.cpp",
1435
+ "additions": 2,
1436
+ "deletions": 0,
1437
+ "blob_id": "a6392beff6edd943b181b669768d5cc110a0caec",
1438
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/cpp/generated/RNOH/generated/turbo_modules/OreitationLockerNativeModule.cpp",
1439
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/cpp/generated/RNOH/generated/turbo_modules/OreitationLockerNativeModule.cpp",
1440
+ "patch": "@@ -21,6 +21,8 @@ OreitationLockerNativeModule::OreitationLockerNativeModule(const ArkTSTurboModul\n ARK_METHOD_METADATA(getDeviceOrientation, 1),\n ARK_METHOD_METADATA(getAutoRotateState, 1),\n ARK_METHOD_METADATA(configure, 1),\n+ ARK_METHOD_METADATA(openSensor, 0),\n+ ARK_METHOD_METADATA(closeSensor, 0),\n };\n }\n \n",
1441
+ "target_branch": "br_rnoh0.77",
1442
+ "source_branch": "br_rnoh0.77",
1443
+ "source_project": {
1444
+ "id": 9920253,
1445
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1446
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1447
+ "path": "rntpc_react-native-orientation-locker"
1448
+ },
1449
+ "target_project": {
1450
+ "id": 4368861,
1451
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1452
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1453
+ "path": "rntpc_react-native-orientation-locker"
1454
+ }
1455
+ },
1456
+ {
1457
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1458
+ "filename": "harmony/orientation_locker/src/main/ets/Logger.ts",
1459
+ "status": "added",
1460
+ "additions": 64,
1461
+ "deletions": 0,
1462
+ "blob_id": "479f3c77c46f292fdd0630d4fafd917b07ed5796",
1463
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/Logger.ts",
1464
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/Logger.ts",
1465
+ "patch": "@@ -0,0 +1,64 @@\n+/*\n+ * MIT License\n+ *\n+ * Copyright (C) 2026 Huawei Device Co., Ltd.\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a copy\n+ * of this software and associated documentation files (the \"Software\"), to deal\n+ * in the Software without restriction, including without limitation the rights\n+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+ * copies of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice shall be included in all\n+ * copies or substantial portions of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+ * SOFTWARE.\n+ */\n+\n+import hilog from '@ohos.hilog';\n+\n+class Logger {\n+ private domain: number;\n+ private prefix: string;\n+ private format: string = '%{public}s, %{public}s';\n+ private isDebug: boolean;\n+\n+ /**\n+ * constructor.\n+ *\n+ * @param Prefix Identifies the log tag.\n+ * @param domain Domain Indicates the service domain, which is a hexadecimal integer ranging from 0x0 to 0xFFFFF.\n+ */\n+ constructor(prefix: string = 'MyApp', domain: number = 0xFF00, isDebug = false) {\n+ this.prefix = prefix;\n+ this.domain = domain;\n+ this.isDebug = isDebug;\n+ }\n+\n+ debug(...args: string[]): void {\n+ if (this.isDebug) {\n+ hilog.debug(this.domain, this.prefix, this.format, args);\n+ }\n+ }\n+\n+ info(...args: string[]): void {\n+ hilog.info(this.domain, this.prefix, this.format, args);\n+ }\n+\n+ warn(...args: string[]): void {\n+ hilog.warn(this.domain, this.prefix, this.format, args);\n+ }\n+\n+ error(...args: string[]): void {\n+ hilog.error(this.domain, this.prefix, this.format, args);\n+ }\n+}\n+\n+export default new Logger('orientationLocker', 0xFF00, false)\n\\n",
1466
+ "target_branch": "br_rnoh0.77",
1467
+ "source_branch": "br_rnoh0.77",
1468
+ "source_project": {
1469
+ "id": 9920253,
1470
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1471
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1472
+ "path": "rntpc_react-native-orientation-locker"
1473
+ },
1474
+ "target_project": {
1475
+ "id": 4368861,
1476
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1477
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1478
+ "path": "rntpc_react-native-orientation-locker"
1479
+ }
1480
+ },
1481
+ {
1482
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1483
+ "filename": "harmony/orientation_locker/src/main/ets/RNOrientationLockerTurboModule.ts",
1484
+ "additions": 75,
1485
+ "deletions": 48,
1486
+ "blob_id": "ba0fcd0fbe5aa9e1674ae83e999836e8f3198edb",
1487
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/RNOrientationLockerTurboModule.ts",
1488
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/RNOrientationLockerTurboModule.ts",
1489
+ "patch": "@@ -11,7 +11,7 @@ import display from '@ohos.display'\n import { BusinessError } from '@kit.BasicServicesKit'\n import sensor from '@ohos.sensor';\n import settings from '@ohos.settings';\n-\n+import Logger from './Logger'\n const ORIENTATION_UNKNOWN = -1;\n \n export class RNOrientationLockerTurboModule extends TurboModule implements TM.OreitationLockerNativeModule.Spec {\n@@ -30,51 +30,72 @@ export class RNOrientationLockerTurboModule extends TurboModule implements TM.Or\n ctx.rnInstance.emitDeviceEvent('orientationDidChange', { orientation: displayValueString })\n }\n })\n+ }\n \n- sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {\n- const X = -data.x;\n- const Y = -data.y;\n- const Z = -data.z;\n- const xyMagnitude = X * X + Y * Y;\n- const zSquared = Z * Z;\n- let orientation = ORIENTATION_UNKNOWN;\n- if (xyMagnitude * 4 >= zSquared) {\n- const angleRad = Math.atan2(-Y, X);\n- let angleDeg = 90 - (angleRad * 180 / Math.PI);\n- while (angleDeg >= 360) angleDeg -= 360;\n- while (angleDeg < 0) angleDeg += 360;\n- orientation = Math.round(angleDeg);\n- }\n+ openSensor() {\n+ try {\n+ sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {\n+ const X = -data.x;\n+ const Y = -data.y;\n+ const Z = -data.z;\n+ const xyMagnitude = X * X + Y * Y;\n+ const zSquared = Z * Z;\n+ let orientation = ORIENTATION_UNKNOWN;\n+ if (xyMagnitude * 4 >= zSquared) {\n+ const angleRad = Math.atan2(-Y, X);\n+ let angleDeg = 90 - (angleRad * 180 / Math.PI);\n+ while (angleDeg >= 360) {\n+ angleDeg -= 360;\n+ }\n+ while (angleDeg < 0) {\n+ angleDeg += 360;\n+ }\n+ orientation = Math.round(angleDeg);\n+ }\n \n- let deviceOrientationValue:string = this.lastDeviceSensorOrientationValue;\n- if (xyMagnitude * 4 < zSquared) {\n- \t // Z 轴主导,设备平放\n- \t // 注意:Z = -data.z,取反后正负颠倒\n- \t // data.z > 0(屏幕朝上)→ Z < 0 → FACE-UP\n- \t // data.z < 0(屏幕朝下)→ Z > 0 → FACE-DOWN\n- \t if (!this.disableFaceUpDown) {\n- \t if (Z < 0) {\n- \t deviceOrientationValue = \"FACE-UP\";\n- \t } else {\n- \t deviceOrientationValue = \"FACE-DOWN\";\n- \t }\n- \t }\n- \t } else if (orientation === ORIENTATION_UNKNOWN) {\n- deviceOrientationValue = \"UNKNOWN\";\n- } else if (orientation > 355 || orientation < 5) {\n- deviceOrientationValue = \"PORTRAIT\";\n- } else if (orientation > 85 && orientation < 95) {\n- deviceOrientationValue = \"LANDSCAPE-RIGHT\";\n- } else if (orientation > 175 && orientation < 185) {\n- deviceOrientationValue = \"PORTRAIT-UPSIDEDOWN\";\n- } else if (orientation > 265 && orientation < 275) {\n- deviceOrientationValue = \"LANDSCAPE-LEFT\";\n- }\n- if (this.lastDeviceSensorOrientationValue !== deviceOrientationValue) {\n- ctx.rnInstance.emitDeviceEvent('deviceOrientationDidChange', { deviceOrientation: deviceOrientationValue })\n- this.lastDeviceSensorOrientationValue = deviceOrientationValue;\n- }\n- }, { interval: 100000000 });\n+ let deviceOrientationValue: string = this.lastDeviceSensorOrientationValue;\n+ if (xyMagnitude * 4 < zSquared) {\n+ // Z 轴主导,设备平放\n+ // 注意:Z = -data.z,取反后正负颠倒\n+ // data.z > 0(屏幕朝上)→ Z < 0 → FACE-UP\n+ // data.z < 0(屏幕朝下)→ Z > 0 → FACE-DOWN\n+ if (!this.disableFaceUpDown) {\n+ if (Z < 0) {\n+ deviceOrientationValue = \"FACE-UP\";\n+ } else {\n+ deviceOrientationValue = \"FACE-DOWN\";\n+ }\n+ }\n+ } else if (orientation === ORIENTATION_UNKNOWN) {\n+ deviceOrientationValue = \"UNKNOWN\";\n+ } else if (orientation > 355 || orientation < 5) {\n+ deviceOrientationValue = \"PORTRAIT\";\n+ } else if (orientation > 85 && orientation < 95) {\n+ deviceOrientationValue = \"LANDSCAPE-RIGHT\";\n+ } else if (orientation > 175 && orientation < 185) {\n+ deviceOrientationValue = \"PORTRAIT-UPSIDEDOWN\";\n+ } else if (orientation > 265 && orientation < 275) {\n+ deviceOrientationValue = \"LANDSCAPE-LEFT\";\n+ }\n+ if (this.lastDeviceSensorOrientationValue !== deviceOrientationValue) {\n+ this.ctx.rnInstance.emitDeviceEvent('deviceOrientationDidChange',\n+ { deviceOrientation: deviceOrientationValue })\n+ this.lastDeviceSensorOrientationValue = deviceOrientationValue;\n+ }\n+ }, { interval: 100000000 });\n+ } catch (err) {\n+ let e: BusinessError = err as BusinessError;\n+ Logger.error(`Failed sensor.on error. Code: ${e.code}, message: ${e.message}`);\n+ }\n+ }\n+\n+ closeSensor() {\n+ try {\n+ sensor.off(sensor.SensorId.ACCELEROMETER);\n+ } catch (err) {\n+ let e: BusinessError = err as BusinessError;\n+ Logger.error(`Failed sensor.off error. Code: ${e.code}, message: ${e.message}`);\n+ }\n }\n \n private windowClass: window.Window | undefined = undefined\n@@ -230,9 +251,15 @@ export class RNOrientationLockerTurboModule extends TurboModule implements TM.Or\n }\n }\n \n- __onDestroy__(): void {\n- super.__onDestroy__()\n- display.off('change')\n- sensor.off(sensor.SensorId.ACCELEROMETER)\n+ __onDestroy__(): void {\n+ super.__onDestroy__()\n+ display.off('change')\n+ try {\n+ this.closeSensor();\n+ } catch (error) {\n+ let e: BusinessError = error as BusinessError;\n+ Logger.error(`Failed to closeSensor. Code: ${e.code}, message: ${e.message}`);\n+ }\n+\n }\n }\n\\n",
1490
+ "target_branch": "br_rnoh0.77",
1491
+ "source_branch": "br_rnoh0.77",
1492
+ "source_project": {
1493
+ "id": 9920253,
1494
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1495
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1496
+ "path": "rntpc_react-native-orientation-locker"
1497
+ },
1498
+ "target_project": {
1499
+ "id": 4368861,
1500
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1501
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1502
+ "path": "rntpc_react-native-orientation-locker"
1503
+ }
1504
+ },
1505
+ {
1506
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1507
+ "filename": "harmony/orientation_locker/src/main/ets/generated/turboModules/OreitationLockerNativeModule.ts",
1508
+ "additions": 4,
1509
+ "deletions": 0,
1510
+ "blob_id": "05e815c4cf5ebea1cd98ca1e037610148a97292d",
1511
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/generated/turboModules/OreitationLockerNativeModule.ts",
1512
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/harmony/orientation_locker/src/main/ets/generated/turboModules/OreitationLockerNativeModule.ts",
1513
+ "patch": "@@ -31,5 +31,9 @@ export namespace OreitationLockerNativeModule {\n getAutoRotateState(callback: (state: boolean) => void): void;\n \n configure(options: Object): void;\n+\n+ openSensor(): void;\n+\n+ closeSensor(): void;\n }\n }\n",
1514
+ "target_branch": "br_rnoh0.77",
1515
+ "source_branch": "br_rnoh0.77",
1516
+ "source_project": {
1517
+ "id": 9920253,
1518
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1519
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1520
+ "path": "rntpc_react-native-orientation-locker"
1521
+ },
1522
+ "target_project": {
1523
+ "id": 4368861,
1524
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1525
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1526
+ "path": "rntpc_react-native-orientation-locker"
1527
+ }
1528
+ },
1529
+ {
1530
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1531
+ "filename": "package.json",
1532
+ "additions": 3,
1533
+ "deletions": 3,
1534
+ "blob_id": "08b28f52ee2ab14410beb2a18e85ed9eac59482a",
1535
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/package.json",
1536
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/package.json",
1537
+ "patch": "@@ -3,12 +3,12 @@\n \"version\": \"1.8.1-beta.2\",\n \"summary\": \"A react-native module that can listen on orientation changing of device\",\n \"description\": \"A react-native module that can listen on orientation changing of device, get current orientation, lock to preferred orientation.\",\n- \"homepage\": \"https://gitcode.com/openharmony-sig/rntpc_react-native-orientation-locker\",\n+ \"homepage\": \"https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"repository\": {\n \"type\": \"git\",\n- \"url\": \"https://gitcode.com/openharmony-sig/rntpc_react-native-orientation-locker\"\n+ \"url\": \"https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker\"\n },\n \"scripts\": {\n \"codegen-lib\": \"react-native codegen-lib-harmony --no-safety-check --npm-package-name react-native-orientation-locker --cpp-output-path ./harmony/orientation_locker/src/main/cpp/generated --ets-output-path ./harmony/orientation_locker/src/main/ets/generated --turbo-modules-spec-paths ./src/OreitationLockerNativeModule.ts\"\n@@ -28,7 +28,7 @@\n },\n \"license\": \"MIT\",\n \"bugs\": {\n- \"url\": \"https://gitcode.com/openharmony-sig/rntpc_react-native-orientation-locker/issues\"\n+ \"url\": \"https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/issues\"\n },\n \"dependencies\": {},\n \"peerDependencies\": {\n",
1538
+ "target_branch": "br_rnoh0.77",
1539
+ "source_branch": "br_rnoh0.77",
1540
+ "source_project": {
1541
+ "id": 9920253,
1542
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1543
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1544
+ "path": "rntpc_react-native-orientation-locker"
1545
+ },
1546
+ "target_project": {
1547
+ "id": 4368861,
1548
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1549
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1550
+ "path": "rntpc_react-native-orientation-locker"
1551
+ }
1552
+ },
1553
+ {
1554
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1555
+ "filename": "src/OreitationLockerNativeModule.ts",
1556
+ "additions": 5,
1557
+ "deletions": 0,
1558
+ "blob_id": "4425c2dff6d1651cc13dc8d263d17611b4200fb2",
1559
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/OreitationLockerNativeModule.ts",
1560
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/OreitationLockerNativeModule.ts",
1561
+ "patch": "@@ -39,6 +39,11 @@ export interface Spec extends TurboModule {\n // 配置选项\n configure(options: Object): void;\n \n+ // 订阅加速度传感器\n+ openSensor(): void;\n+\n+ // 取消订阅加速度传感器\n+ closeSensor(): void;\n }\n export default TurboModuleRegistry.get<Spec>('OreitationLockerNativeModule') as Spec | null;\n \n",
1562
+ "target_branch": "br_rnoh0.77",
1563
+ "source_branch": "br_rnoh0.77",
1564
+ "source_project": {
1565
+ "id": 9920253,
1566
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1567
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1568
+ "path": "rntpc_react-native-orientation-locker"
1569
+ },
1570
+ "target_project": {
1571
+ "id": 4368861,
1572
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1573
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1574
+ "path": "rntpc_react-native-orientation-locker"
1575
+ }
1576
+ },
1577
+ {
1578
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1579
+ "filename": "src/orientation.harmony.js",
1580
+ "additions": 2,
1581
+ "deletions": 0,
1582
+ "blob_id": "df036356f5bc9dbea6ac736fc29f44e34e3161c7",
1583
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/orientation.harmony.js",
1584
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/orientation.harmony.js",
1585
+ "patch": "@@ -115,6 +115,7 @@ export default class Orientation {\n };\n \n static addDeviceOrientationListener = cb => {\n+ OrientationNative.openSensor();\n var key = getKey(cb);\n listeners[key] = deviceEventEmitter.addListener(\n \"deviceOrientationDidChange\",\n@@ -135,6 +136,7 @@ export default class Orientation {\n }\n listeners[key].remove();\n listeners[key] = null;\n+ OrientationNative.closeSensor();\n };\n \n static addLockListener = cb => {\n",
1586
+ "target_branch": "br_rnoh0.77",
1587
+ "source_branch": "br_rnoh0.77",
1588
+ "source_project": {
1589
+ "id": 9920253,
1590
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1591
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1592
+ "path": "rntpc_react-native-orientation-locker"
1593
+ },
1594
+ "target_project": {
1595
+ "id": 4368861,
1596
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1597
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1598
+ "path": "rntpc_react-native-orientation-locker"
1599
+ }
1600
+ },
1601
+ {
1602
+ "sha": "2cd51c7539f4b11734c1ebe740b4d93bc53ae80e",
1603
+ "filename": "src/orientation.js",
1604
+ "additions": 4,
1605
+ "deletions": 0,
1606
+ "blob_id": "cef27c6148325d7be6e88d56772adfdd44f260d2",
1607
+ "blob_url": "https://gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/blob/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/orientation.js",
1608
+ "raw_url": "https://raw.gitcode.com/CPF-RN/rntpc_react-native-orientation-locker/raw/2cd51c7539f4b11734c1ebe740b4d93bc53ae80e/src/orientation.js",
1609
+ "patch": "@@ -46,6 +46,10 @@ export default class Orientation {\n \n static removeDeviceOrientationListener = cb => {};\n \n+ static openSensor = () => {};\n+\n+ static closeSensor = () => {};\n+\n static addLockListener = cb => {};\n \n static removeLockListener = cb => {};\n",
1610
+ "target_branch": "br_rnoh0.77",
1611
+ "source_branch": "br_rnoh0.77",
1612
+ "source_project": {
1613
+ "id": 9920253,
1614
+ "full_name": "qq_434633291111/rntpc_react-native-orientation-locker",
1615
+ "human_name": "qq_434633291111 / rntpc_react-native-orientation-locker",
1616
+ "path": "rntpc_react-native-orientation-locker"
1617
+ },
1618
+ "target_project": {
1619
+ "id": 4368861,
1620
+ "full_name": "CPF-RN/rntpc_react-native-orientation-locker",
1621
+ "human_name": "CPF-RN / rntpc_react-native-orientation-locker",
1622
+ "path": "rntpc_react-native-orientation-locker"
1623
+ }
1624
+ }
1625
+ ]
1626
+ }