zcw-shared 1.46.2 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/functions/async/sleep.d.ts +5 -0
- package/dist/functions/async/sleep.js +6 -0
- package/dist/functions/async/sleep.js.map +1 -0
- package/dist/functions/async/timeout.d.ts +6 -0
- package/dist/functions/async/timeout.js +12 -0
- package/dist/functions/async/timeout.js.map +1 -0
- package/dist/functions/browser/computePosition.d.ts +6 -0
- package/dist/functions/browser/computePosition.js +49 -0
- package/dist/functions/browser/computePosition.js.map +1 -0
- package/dist/functions/browser/createSharedKeyboardCenter.d.ts +18 -0
- package/dist/functions/browser/createSharedKeyboardCenter.js +58 -0
- package/dist/functions/browser/createSharedKeyboardCenter.js.map +1 -0
- package/dist/functions/browser/createThrottledEventListener.d.ts +11 -0
- package/dist/functions/browser/createThrottledEventListener.js +51 -0
- package/dist/functions/browser/createThrottledEventListener.js.map +1 -0
- package/dist/functions/browser/demonstrateResourceLoading.d.ts +32 -0
- package/dist/functions/browser/demonstrateResourceLoading.js +169 -0
- package/dist/functions/browser/demonstrateResourceLoading.js.map +1 -0
- package/dist/functions/browser/detectOverflow.d.ts +12 -0
- package/dist/functions/browser/detectOverflow.js +17 -0
- package/dist/functions/browser/detectOverflow.js.map +1 -0
- package/dist/functions/browser/getAlignment.d.ts +2 -0
- package/dist/functions/browser/getAlignment.js +5 -0
- package/dist/functions/browser/getAlignment.js.map +1 -0
- package/dist/functions/browser/getBasePlacement.d.ts +2 -0
- package/dist/functions/browser/getBasePlacement.js +4 -0
- package/dist/functions/browser/getBasePlacement.js.map +1 -0
- package/dist/functions/browser/getCrossAxisFlip.d.ts +2 -0
- package/dist/functions/browser/getCrossAxisFlip.js +11 -0
- package/dist/functions/browser/getCrossAxisFlip.js.map +1 -0
- package/dist/functions/browser/getElementRect.d.ts +3 -0
- package/dist/functions/browser/getElementRect.js +14 -0
- package/dist/functions/browser/getElementRect.js.map +1 -0
- package/dist/functions/browser/getFlipPlacements.d.ts +2 -0
- package/dist/functions/browser/getFlipPlacements.js +13 -0
- package/dist/functions/browser/getFlipPlacements.js.map +1 -0
- package/dist/functions/browser/getMainAxisFlip.d.ts +2 -0
- package/dist/functions/browser/getMainAxisFlip.js +17 -0
- package/dist/functions/browser/getMainAxisFlip.js.map +1 -0
- package/dist/functions/browser/getRelativePosition.d.ts +3 -0
- package/dist/functions/browser/getRelativePosition.js +14 -0
- package/dist/functions/browser/getRelativePosition.js.map +1 -0
- package/dist/functions/browser/getViewportRect.d.ts +7 -0
- package/dist/functions/browser/getViewportRect.js +15 -0
- package/dist/functions/browser/getViewportRect.js.map +1 -0
- package/dist/functions/browser/isValidPlacement.d.ts +2 -0
- package/dist/functions/browser/isValidPlacement.js +16 -0
- package/dist/functions/browser/isValidPlacement.js.map +1 -0
- package/dist/functions/browser/pickFile.d.ts +15 -0
- package/dist/functions/browser/pickFile.js +48 -0
- package/dist/functions/browser/pickFile.js.map +1 -0
- package/dist/functions/build/generateExports.d.ts +26 -0
- package/dist/functions/build/generateExports.js +34 -0
- package/dist/functions/build/generateExports.js.map +1 -0
- package/dist/functions/core/diff/diff.d.ts +25 -0
- package/dist/functions/core/diff/diff.js +316 -0
- package/dist/functions/core/diff/diff.js.map +1 -0
- package/dist/functions/core/diff/vueDiff.d.ts +38 -0
- package/dist/functions/core/diff/vueDiff.js +333 -0
- package/dist/functions/core/diff/vueDiff.js.map +1 -0
- package/dist/functions/core/generator/generatorUtils.d.ts +16 -0
- package/dist/functions/core/generator/generatorUtils.js +139 -0
- package/dist/functions/core/generator/generatorUtils.js.map +1 -0
- package/dist/functions/core/type/isType.d.ts +11 -0
- package/dist/functions/core/type/isType.js +30 -0
- package/dist/functions/core/type/isType.js.map +1 -0
- package/dist/functions/data/array-object/chunk.d.ts +1 -0
- package/dist/functions/data/array-object/chunk.js +11 -0
- package/dist/functions/data/array-object/chunk.js.map +1 -0
- package/dist/functions/data/array-object/deepClone.d.ts +12 -0
- package/dist/functions/data/array-object/deepClone.js +131 -0
- package/dist/functions/data/array-object/deepClone.js.map +1 -0
- package/dist/functions/data/array-object/evolve.d.ts +3 -0
- package/dist/functions/data/array-object/evolve.js +15 -0
- package/dist/functions/data/array-object/evolve.js.map +1 -0
- package/dist/functions/data/array-object/flatten.d.ts +7 -0
- package/dist/functions/data/array-object/flatten.js +60 -0
- package/dist/functions/data/array-object/flatten.js.map +1 -0
- package/dist/functions/data/array-object/flattenObject.d.ts +5 -0
- package/dist/functions/data/array-object/flattenObject.js +102 -0
- package/dist/functions/data/array-object/flattenObject.js.map +1 -0
- package/dist/functions/data/array-object/groupBy.d.ts +1 -0
- package/dist/functions/data/array-object/groupBy.js +14 -0
- package/dist/functions/data/array-object/groupBy.js.map +1 -0
- package/dist/functions/data/array-object/omit.d.ts +1 -0
- package/dist/functions/data/array-object/omit.js +8 -0
- package/dist/functions/data/array-object/omit.js.map +1 -0
- package/dist/functions/data/array-object/pick.d.ts +1 -0
- package/dist/functions/data/array-object/pick.js +10 -0
- package/dist/functions/data/array-object/pick.js.map +1 -0
- package/dist/functions/data/array-object/shuffle.d.ts +1 -0
- package/dist/functions/data/array-object/shuffle.js +9 -0
- package/dist/functions/data/array-object/shuffle.js.map +1 -0
- package/dist/functions/data/array-object/sortBy.d.ts +1 -0
- package/dist/functions/data/array-object/sortBy.js +13 -0
- package/dist/functions/data/array-object/sortBy.js.map +1 -0
- package/dist/functions/data/array-object/unique.d.ts +10 -0
- package/dist/functions/data/array-object/unique.js +85 -0
- package/dist/functions/data/array-object/unique.js.map +1 -0
- package/dist/functions/data/date/dateRange.d.ts +1 -0
- package/dist/functions/data/date/dateRange.js +18 -0
- package/dist/functions/data/date/dateRange.js.map +1 -0
- package/dist/functions/data/date/formatDate.d.ts +1 -0
- package/dist/functions/data/date/formatDate.js +21 -0
- package/dist/functions/data/date/formatDate.js.map +1 -0
- package/dist/functions/data/date/timeAgo.d.ts +1 -0
- package/dist/functions/data/date/timeAgo.js +49 -0
- package/dist/functions/data/date/timeAgo.js.map +1 -0
- package/dist/functions/data/number/average.d.ts +1 -0
- package/dist/functions/data/number/average.js +8 -0
- package/dist/functions/data/number/average.js.map +1 -0
- package/dist/functions/data/number/clamp.d.ts +1 -0
- package/dist/functions/data/number/clamp.js +7 -0
- package/dist/functions/data/number/clamp.js.map +1 -0
- package/dist/functions/data/number/formatNumber.d.ts +8 -0
- package/dist/functions/data/number/formatNumber.js +16 -0
- package/dist/functions/data/number/formatNumber.js.map +1 -0
- package/dist/functions/data/number/median.d.ts +1 -0
- package/dist/functions/data/number/median.js +14 -0
- package/dist/functions/data/number/median.js.map +1 -0
- package/dist/functions/data/number/percentile.d.ts +1 -0
- package/dist/functions/data/number/percentile.js +18 -0
- package/dist/functions/data/number/percentile.js.map +1 -0
- package/dist/functions/data/number/random.d.ts +4 -0
- package/dist/functions/data/number/random.js +9 -0
- package/dist/functions/data/number/random.js.map +1 -0
- package/dist/functions/data/number/range.d.ts +1 -0
- package/dist/functions/data/number/range.js +18 -0
- package/dist/functions/data/number/range.js.map +1 -0
- package/dist/functions/data/number/sum.d.ts +1 -0
- package/dist/functions/data/number/sum.js +4 -0
- package/dist/functions/data/number/sum.js.map +1 -0
- package/dist/functions/data/randomRegion.d.ts +24 -0
- package/dist/functions/data/randomRegion.js +74 -0
- package/dist/functions/data/randomRegion.js.map +1 -0
- package/dist/functions/data/string/base64.d.ts +5 -0
- package/dist/functions/data/string/base64.js +6 -0
- package/dist/functions/data/string/base64.js.map +1 -0
- package/dist/functions/data/string/capitalize.d.ts +1 -0
- package/dist/functions/data/string/capitalize.js +6 -0
- package/dist/functions/data/string/capitalize.js.map +1 -0
- package/dist/functions/data/string/caseConverter.d.ts +19 -0
- package/dist/functions/data/string/caseConverter.js +94 -0
- package/dist/functions/data/string/caseConverter.js.map +1 -0
- package/dist/functions/data/string/desensitize.d.ts +13 -0
- package/dist/functions/data/string/desensitize.js +107 -0
- package/dist/functions/data/string/desensitize.js.map +1 -0
- package/dist/functions/data/string/htmlEscape.d.ts +20 -0
- package/dist/functions/data/string/htmlEscape.js +80 -0
- package/dist/functions/data/string/htmlEscape.js.map +1 -0
- package/dist/functions/data/string/levenshtein.d.ts +1 -0
- package/dist/functions/data/string/levenshtein.js +27 -0
- package/dist/functions/data/string/levenshtein.js.map +1 -0
- package/dist/functions/data/string/normalize.d.ts +8 -0
- package/dist/functions/data/string/normalize.js +37 -0
- package/dist/functions/data/string/normalize.js.map +1 -0
- package/dist/functions/data/string/pad.d.ts +13 -0
- package/dist/functions/data/string/pad.js +50 -0
- package/dist/functions/data/string/pad.js.map +1 -0
- package/dist/functions/data/string/palindrome.d.ts +3 -0
- package/dist/functions/data/string/palindrome.js +15 -0
- package/dist/functions/data/string/palindrome.js.map +1 -0
- package/dist/functions/data/string/similarity.d.ts +1 -0
- package/dist/functions/data/string/similarity.js +13 -0
- package/dist/functions/data/string/similarity.js.map +1 -0
- package/dist/functions/data/string/template.d.ts +4 -0
- package/dist/functions/data/string/template.js +21 -0
- package/dist/functions/data/string/template.js.map +1 -0
- package/dist/functions/data/string/testRegex.d.ts +20 -0
- package/dist/functions/data/string/testRegex.js +300 -0
- package/dist/functions/data/string/testRegex.js.map +1 -0
- package/dist/functions/data/string/wordCount.d.ts +5 -0
- package/dist/functions/data/string/wordCount.js +11 -0
- package/dist/functions/data/string/wordCount.js.map +1 -0
- package/dist/functions/data/tree/buildTree.d.ts +7 -0
- package/dist/functions/data/tree/buildTree.js +27 -0
- package/dist/functions/data/tree/buildTree.js.map +1 -0
- package/dist/functions/data/tree/filterTree.d.ts +4 -0
- package/dist/functions/data/tree/filterTree.js +21 -0
- package/dist/functions/data/tree/filterTree.js.map +1 -0
- package/dist/functions/data/tree/findNode.d.ts +4 -0
- package/dist/functions/data/tree/findNode.js +21 -0
- package/dist/functions/data/tree/findNode.js.map +1 -0
- package/dist/functions/data/tree/flattenTree.d.ts +6 -0
- package/dist/functions/data/tree/flattenTree.js +21 -0
- package/dist/functions/data/tree/flattenTree.js.map +1 -0
- package/dist/functions/file/walk.d.ts +18 -0
- package/dist/functions/file/walk.js +58 -0
- package/dist/functions/file/walk.js.map +1 -0
- package/dist/functions/integrations/ag-grid/generateLicense.d.ts +7 -0
- package/dist/functions/integrations/ag-grid/generateLicense.js +12 -0
- package/dist/functions/integrations/ag-grid/generateLicense.js.map +1 -0
- package/dist/functions/integrations/uniapp/app-plus/buildAndroidApp.d.ts +30 -0
- package/dist/functions/integrations/uniapp/app-plus/buildAndroidApp.js +884 -0
- package/dist/functions/integrations/uniapp/app-plus/buildAndroidApp.js.map +1 -0
- package/dist/functions/integrations/uniapp/app-plus/buildIOSApp.d.ts +31 -0
- package/dist/functions/integrations/uniapp/app-plus/buildIOSApp.js +900 -0
- package/dist/functions/integrations/uniapp/app-plus/buildIOSApp.js.map +1 -0
- package/dist/functions/integrations/uniapp/build.d.ts +21 -0
- package/dist/functions/integrations/uniapp/build.js +83 -0
- package/dist/functions/integrations/uniapp/build.js.map +1 -0
- package/dist/functions/integrations/uniapp/detectAndroidProjectStructure.d.ts +11 -0
- package/dist/functions/integrations/uniapp/detectAndroidProjectStructure.js +30 -0
- package/dist/functions/integrations/uniapp/detectAndroidProjectStructure.js.map +1 -0
- package/dist/functions/integrations/uniapp/detectProjectType.d.ts +20 -0
- package/dist/functions/integrations/uniapp/detectProjectType.js +68 -0
- package/dist/functions/integrations/uniapp/detectProjectType.js.map +1 -0
- package/dist/functions/integrations/uniapp/parseManifest.d.ts +20 -0
- package/dist/functions/integrations/uniapp/parseManifest.js +51 -0
- package/dist/functions/integrations/uniapp/parseManifest.js.map +1 -0
- package/dist/functions/integrations/uniapp/waitForPages.d.ts +7 -0
- package/dist/functions/integrations/uniapp/waitForPages.js +20 -0
- package/dist/functions/integrations/uniapp/waitForPages.js.map +1 -0
- package/dist/functions/integrations/vue/dynamicMount.d.ts +18 -0
- package/dist/functions/integrations/vue/dynamicMount.js +25 -0
- package/dist/functions/integrations/vue/dynamicMount.js.map +1 -0
- package/dist/functions/integrations/vue/extractColorsFromVueFile.d.ts +3 -0
- package/dist/functions/integrations/vue/extractColorsFromVueFile.js +18 -0
- package/dist/functions/integrations/vue/extractColorsFromVueFile.js.map +1 -0
- package/dist/functions/integrations/vue/extractColorsFromVueSection.d.ts +3 -0
- package/dist/functions/integrations/vue/extractColorsFromVueSection.js +53 -0
- package/dist/functions/integrations/vue/extractColorsFromVueSection.js.map +1 -0
- package/dist/functions/integrations/vue/filterSections.d.ts +2 -0
- package/dist/functions/integrations/vue/filterSections.js +11 -0
- package/dist/functions/integrations/vue/filterSections.js.map +1 -0
- package/dist/functions/integrations/vue/isVNode.d.ts +2 -0
- package/dist/functions/integrations/vue/isVNode.js +6 -0
- package/dist/functions/integrations/vue/isVNode.js.map +1 -0
- package/dist/functions/integrations/vue/isVueComponent.d.ts +2 -0
- package/dist/functions/integrations/vue/isVueComponent.js +6 -0
- package/dist/functions/integrations/vue/isVueComponent.js.map +1 -0
- package/dist/functions/integrations/vue/parseVueFile.d.ts +2 -0
- package/dist/functions/integrations/vue/parseVueFile.js +53 -0
- package/dist/functions/integrations/vue/parseVueFile.js.map +1 -0
- package/dist/functions/integrations/wechat/miniapp/downloadFile.d.ts +6 -0
- package/dist/functions/integrations/wechat/miniapp/downloadFile.js +39 -0
- package/dist/functions/integrations/wechat/miniapp/downloadFile.js.map +1 -0
- package/dist/functions/ios/integrateCameraGallery.d.ts +16 -0
- package/dist/functions/ios/integrateCameraGallery.js +93 -0
- package/dist/functions/ios/integrateCameraGallery.js.map +1 -0
- package/dist/functions/patterns/MyPromise.d.ts +32 -0
- package/dist/functions/patterns/MyPromise.js +254 -0
- package/dist/functions/patterns/MyPromise.js.map +1 -0
- package/dist/functions/patterns/functionBind.d.ts +4 -0
- package/dist/functions/patterns/functionBind.js +33 -0
- package/dist/functions/patterns/functionBind.js.map +1 -0
- package/dist/functions/patterns/myInstanceof.d.ts +5 -0
- package/dist/functions/patterns/myInstanceof.js +56 -0
- package/dist/functions/patterns/myInstanceof.js.map +1 -0
- package/dist/functions/patterns/myNew.d.ts +3 -0
- package/dist/functions/patterns/myNew.js +19 -0
- package/dist/functions/patterns/myNew.js.map +1 -0
- package/dist/functions/platform/android/buildProject.d.ts +13 -0
- package/dist/functions/platform/android/buildProject.js +122 -0
- package/dist/functions/platform/android/buildProject.js.map +1 -0
- package/dist/functions/platform/android/configureAppIcon.d.ts +17 -0
- package/dist/functions/platform/android/configureAppIcon.js +106 -0
- package/dist/functions/platform/android/configureAppIcon.js.map +1 -0
- package/dist/functions/platform/android/configureLaunchScreen.d.ts +21 -0
- package/dist/functions/platform/android/configureLaunchScreen.js +328 -0
- package/dist/functions/platform/android/configureLaunchScreen.js.map +1 -0
- package/dist/functions/platform/android/detectAndroidModules.d.ts +8 -0
- package/dist/functions/platform/android/detectAndroidModules.js +21 -0
- package/dist/functions/platform/android/detectAndroidModules.js.map +1 -0
- package/dist/functions/platform/android/integrateFacebookLogin.d.ts +12 -0
- package/dist/functions/platform/android/integrateFacebookLogin.js +91 -0
- package/dist/functions/platform/android/integrateFacebookLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateGoogleLogin.d.ts +10 -0
- package/dist/functions/platform/android/integrateGoogleLogin.js +199 -0
- package/dist/functions/platform/android/integrateGoogleLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateMiuiLogin.d.ts +13 -0
- package/dist/functions/platform/android/integrateMiuiLogin.js +115 -0
- package/dist/functions/platform/android/integrateMiuiLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateQQLogin.d.ts +12 -0
- package/dist/functions/platform/android/integrateQQLogin.js +130 -0
- package/dist/functions/platform/android/integrateQQLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateShareTrace.d.ts +10 -0
- package/dist/functions/platform/android/integrateShareTrace.js +181 -0
- package/dist/functions/platform/android/integrateShareTrace.js.map +1 -0
- package/dist/functions/platform/android/integrateSinaLogin.d.ts +13 -0
- package/dist/functions/platform/android/integrateSinaLogin.js +85 -0
- package/dist/functions/platform/android/integrateSinaLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateThirdPartyModule.d.ts +46 -0
- package/dist/functions/platform/android/integrateThirdPartyModule.js +251 -0
- package/dist/functions/platform/android/integrateThirdPartyModule.js.map +1 -0
- package/dist/functions/platform/android/integrateUniAppNativePlugin.d.ts +22 -0
- package/dist/functions/platform/android/integrateUniAppNativePlugin.js +631 -0
- package/dist/functions/platform/android/integrateUniAppNativePlugin.js.map +1 -0
- package/dist/functions/platform/android/integrateUniverifyLogin.d.ts +11 -0
- package/dist/functions/platform/android/integrateUniverifyLogin.js +314 -0
- package/dist/functions/platform/android/integrateUniverifyLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateWechatLogin.d.ts +13 -0
- package/dist/functions/platform/android/integrateWechatLogin.js +154 -0
- package/dist/functions/platform/android/integrateWechatLogin.js.map +1 -0
- package/dist/functions/platform/android/integrateWechatShare.d.ts +13 -0
- package/dist/functions/platform/android/integrateWechatShare.js +154 -0
- package/dist/functions/platform/android/integrateWechatShare.js.map +1 -0
- package/dist/functions/platform/android/modifyGradle.d.ts +28 -0
- package/dist/functions/platform/android/modifyGradle.js +119 -0
- package/dist/functions/platform/android/modifyGradle.js.map +1 -0
- package/dist/functions/platform/android/modifyManifest.d.ts +39 -0
- package/dist/functions/platform/android/modifyManifest.js +225 -0
- package/dist/functions/platform/android/modifyManifest.js.map +1 -0
- package/dist/functions/platform/android/permission.d.ts +54 -0
- package/dist/functions/platform/android/permission.js +85 -0
- package/dist/functions/platform/android/permission.js.map +1 -0
- package/dist/functions/platform/ios/configureAppIcon.d.ts +17 -0
- package/dist/functions/platform/ios/configureAppIcon.js +149 -0
- package/dist/functions/platform/ios/configureAppIcon.js.map +1 -0
- package/dist/functions/platform/ios/configureLaunchScreen.d.ts +17 -0
- package/dist/functions/platform/ios/configureLaunchScreen.js +150 -0
- package/dist/functions/platform/ios/configureLaunchScreen.js.map +1 -0
- package/dist/functions/platform/ios/configurePermissions.d.ts +19 -0
- package/dist/functions/platform/ios/configurePermissions.js +120 -0
- package/dist/functions/platform/ios/configurePermissions.js.map +1 -0
- package/dist/functions/platform/ios/integrateNativePlugin.d.ts +35 -0
- package/dist/functions/platform/ios/integrateNativePlugin.js +994 -0
- package/dist/functions/platform/ios/integrateNativePlugin.js.map +1 -0
- package/dist/functions/platform/ios/integrateQQShare.d.ts +14 -0
- package/dist/functions/platform/ios/integrateQQShare.js +132 -0
- package/dist/functions/platform/ios/integrateQQShare.js.map +1 -0
- package/dist/functions/platform/ios/integrateSinaShare.d.ts +16 -0
- package/dist/functions/platform/ios/integrateSinaShare.js +108 -0
- package/dist/functions/platform/ios/integrateSinaShare.js.map +1 -0
- package/dist/functions/platform/ios/integrateThirdPartyModule.d.ts +62 -0
- package/dist/functions/platform/ios/integrateThirdPartyModule.js +883 -0
- package/dist/functions/platform/ios/integrateThirdPartyModule.js.map +1 -0
- package/dist/functions/platform/ios/integrateWechatOauth.d.ts +14 -0
- package/dist/functions/platform/ios/integrateWechatOauth.js +107 -0
- package/dist/functions/platform/ios/integrateWechatOauth.js.map +1 -0
- package/dist/functions/platform/ios/integrateWechatShare.d.ts +14 -0
- package/dist/functions/platform/ios/integrateWechatShare.js +101 -0
- package/dist/functions/platform/ios/integrateWechatShare.js.map +1 -0
- package/dist/functions/platform/ios/modifyInfoPlistKeyValue.d.ts +2 -0
- package/dist/functions/platform/ios/modifyInfoPlistKeyValue.js +45 -0
- package/dist/functions/platform/ios/modifyInfoPlistKeyValue.js.map +1 -0
- package/dist/functions/platform/ios/safelyModifyProjectPbxproj.d.ts +16 -0
- package/dist/functions/platform/ios/safelyModifyProjectPbxproj.js +136 -0
- package/dist/functions/platform/ios/safelyModifyProjectPbxproj.js.map +1 -0
- package/dist/functions/platform/ios/useAltool.d.ts +39 -0
- package/dist/functions/platform/ios/useAltool.js +350 -0
- package/dist/functions/platform/ios/useAltool.js.map +1 -0
- package/dist/functions/style/buildTokens.d.ts +76 -0
- package/dist/functions/style/buildTokens.js +183 -0
- package/dist/functions/style/buildTokens.js.map +1 -0
- package/dist/functions/style/extractCssVariables.d.ts +16 -0
- package/dist/functions/style/extractCssVariables.js +256 -0
- package/dist/functions/style/extractCssVariables.js.map +1 -0
- package/dist/functions/style/generateVariables.d.ts +7 -0
- package/dist/functions/style/generateVariables.js +135 -0
- package/dist/functions/style/generateVariables.js.map +1 -0
- package/dist/functions/style/mixColors.d.ts +1 -0
- package/dist/functions/style/mixColors.js +38 -0
- package/dist/functions/style/mixColors.js.map +1 -0
- package/dist/functions/style/parseDesignTokens.d.ts +10 -0
- package/dist/functions/style/parseDesignTokens.js +216 -0
- package/dist/functions/style/parseDesignTokens.js.map +1 -0
- package/dist/functions/uniapp/app-plus/buildIOSApp.js +36 -0
- package/dist/functions/uniapp/app-plus/buildIOSApp.js.map +1 -1
- package/dist/functions/uniapp/camera/showCamera.d.ts +11 -0
- package/dist/functions/uniapp/camera/showCamera.js +22 -0
- package/dist/functions/uniapp/camera/showCamera.js.map +1 -0
- package/dist/functions/uniapp/customer-service/adapters/openCustomerServiceInMiniapp.d.ts +23 -0
- package/dist/functions/uniapp/customer-service/adapters/openCustomerServiceInMiniapp.js +69 -0
- package/dist/functions/uniapp/customer-service/adapters/openCustomerServiceInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/customer-service/showWxCustomerService.d.ts +28 -0
- package/dist/functions/uniapp/customer-service/showWxCustomerService.js +25 -0
- package/dist/functions/uniapp/customer-service/showWxCustomerService.js.map +1 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInApp.d.ts +10 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInApp.js +97 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInApp.js.map +1 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInH5.d.ts +30 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInH5.js +83 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInH5.js.map +1 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInMiniapp.d.ts +10 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInMiniapp.js +97 -0
- package/dist/functions/uniapp/file/adapters/readWriteFileInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/file/showFile.d.ts +35 -0
- package/dist/functions/uniapp/file/showFile.js +66 -0
- package/dist/functions/uniapp/file/showFile.js.map +1 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInApp.d.ts +9 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInApp.js +52 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInApp.js.map +1 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInH5.d.ts +9 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInH5.js +52 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInH5.js.map +1 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInMiniapp.d.ts +9 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInMiniapp.js +52 -0
- package/dist/functions/uniapp/image/adapters/chooseImageInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/image/showImage.d.ts +11 -0
- package/dist/functions/uniapp/image/showImage.js +23 -0
- package/dist/functions/uniapp/image/showImage.js.map +1 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInApp.d.ts +10 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInApp.js +49 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInApp.js.map +1 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInMiniapp.d.ts +9 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInMiniapp.js +27 -0
- package/dist/functions/uniapp/login/adapters/wechatLoginInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/login/showLogin.d.ts +13 -0
- package/dist/functions/uniapp/login/showLogin.js +43 -0
- package/dist/functions/uniapp/login/showLogin.js.map +1 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInApp.d.ts +8 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInApp.js +36 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInApp.js.map +1 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInH5.d.ts +13 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInH5.js +44 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInH5.js.map +1 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInMiniapp.d.ts +8 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInMiniapp.js +37 -0
- package/dist/functions/uniapp/pay/adapters/wechatPayInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/pay/showPay.d.ts +18 -0
- package/dist/functions/uniapp/pay/showPay.js +60 -0
- package/dist/functions/uniapp/pay/showPay.js.map +1 -0
- package/dist/functions/uniapp/phone/adapters/getPhoneInMiniapp.d.ts +6 -0
- package/dist/functions/uniapp/phone/adapters/getPhoneInMiniapp.js +41 -0
- package/dist/functions/uniapp/phone/adapters/getPhoneInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/phone/showWxPhone.d.ts +8 -0
- package/dist/functions/uniapp/phone/showWxPhone.js +25 -0
- package/dist/functions/uniapp/phone/showWxPhone.js.map +1 -0
- package/dist/functions/uniapp/record/adapters/recordInApp.d.ts +12 -0
- package/dist/functions/uniapp/record/adapters/recordInApp.js +64 -0
- package/dist/functions/uniapp/record/adapters/recordInApp.js.map +1 -0
- package/dist/functions/uniapp/record/adapters/recordInH5.d.ts +21 -0
- package/dist/functions/uniapp/record/adapters/recordInH5.js +82 -0
- package/dist/functions/uniapp/record/adapters/recordInH5.js.map +1 -0
- package/dist/functions/uniapp/record/adapters/recordInMiniapp.d.ts +12 -0
- package/dist/functions/uniapp/record/adapters/recordInMiniapp.js +64 -0
- package/dist/functions/uniapp/record/adapters/recordInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/record/showRecord.d.ts +23 -0
- package/dist/functions/uniapp/record/showRecord.js +95 -0
- package/dist/functions/uniapp/record/showRecord.js.map +1 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInApp.d.ts +9 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInApp.js +30 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInApp.js.map +1 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInMiniapp.d.ts +9 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInMiniapp.js +30 -0
- package/dist/functions/uniapp/scan-code/adapters/scanCodeInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/scan-code/showScanCode.d.ts +12 -0
- package/dist/functions/uniapp/scan-code/showScanCode.js +28 -0
- package/dist/functions/uniapp/scan-code/showScanCode.js.map +1 -0
- package/dist/functions/uniapp/subscribe-message/adapters/wechatSubscribeMessageInMiniapp.d.ts +9 -0
- package/dist/functions/uniapp/subscribe-message/adapters/wechatSubscribeMessageInMiniapp.js +41 -0
- package/dist/functions/uniapp/subscribe-message/adapters/wechatSubscribeMessageInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/subscribe-message/showWxSubscribeMessage.d.ts +11 -0
- package/dist/functions/uniapp/subscribe-message/showWxSubscribeMessage.js +25 -0
- package/dist/functions/uniapp/subscribe-message/showWxSubscribeMessage.js.map +1 -0
- package/dist/functions/uniapp/user-info/wxGetUserInfo.d.ts +43 -0
- package/dist/functions/uniapp/user-info/wxGetUserInfo.js +55 -0
- package/dist/functions/uniapp/user-info/wxGetUserInfo.js.map +1 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInApp.d.ts +9 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInApp.js +31 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInApp.js.map +1 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInH5.d.ts +9 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInH5.js +30 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInH5.js.map +1 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInMiniapp.d.ts +9 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInMiniapp.js +31 -0
- package/dist/functions/uniapp/video/adapters/chooseVideoInMiniapp.js.map +1 -0
- package/dist/functions/uniapp/video/showVideo.d.ts +11 -0
- package/dist/functions/uniapp/video/showVideo.js +23 -0
- package/dist/functions/uniapp/video/showVideo.js.map +1 -0
- package/dist/functions/validation/parseJwtPayload.d.ts +7 -0
- package/dist/functions/validation/parseJwtPayload.js +33 -0
- package/dist/functions/validation/parseJwtPayload.js.map +1 -0
- package/dist/functions/validation/validate.d.ts +11 -0
- package/dist/functions/validation/validate.js +44 -0
- package/dist/functions/validation/validate.js.map +1 -0
- package/dist/vue-hooks/browser/useBridgeMessage.d.ts +2 -1
- package/dist/vue-hooks/browser/useBridgeMessage.js +13 -11
- package/dist/vue-hooks/browser/useBridgeMessage.js.map +1 -1
- package/package.json +37 -2
- package/references/blob.d.ts +2 -0
- package/references/device.d.ts +46 -0
- package/references/dom.d.ts +6 -0
- package/references/uniapp.d.ts +221 -8
- package/types/uniapp-ios-build.d.ts +22 -0
- package/types/uniapp.d.ts +298 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { modifyManifest } from './modifyManifest';
|
|
2
|
+
export async function configureManifestPermissions(manifestPath, permissions, deps) {
|
|
3
|
+
const normalizedPermissions = permissions.map(p => p.startsWith('android.permission.') ? p : `android.permission.${p}`);
|
|
4
|
+
const existingPermissions = getManifestPermissions(manifestPath, deps);
|
|
5
|
+
const permissionsToAdd = normalizedPermissions.filter(p => !existingPermissions.includes(p));
|
|
6
|
+
if (permissionsToAdd.length === 0) {
|
|
7
|
+
return {
|
|
8
|
+
success: true,
|
|
9
|
+
message: '所有权限已存在,无需添加',
|
|
10
|
+
data: { added: 0, skipped: normalizedPermissions.length }
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const modifications = permissionsToAdd.map(permission => ({
|
|
14
|
+
xpath: '//manifest',
|
|
15
|
+
action: 'addElement',
|
|
16
|
+
elementName: 'uses-permission',
|
|
17
|
+
attributes: {
|
|
18
|
+
'android:name': permission
|
|
19
|
+
}
|
|
20
|
+
}));
|
|
21
|
+
const result = await modifyManifest(manifestPath, modifications, deps);
|
|
22
|
+
if (result.success) {
|
|
23
|
+
return {
|
|
24
|
+
...result,
|
|
25
|
+
data: {
|
|
26
|
+
added: permissionsToAdd.length,
|
|
27
|
+
skipped: normalizedPermissions.length - permissionsToAdd.length
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
export async function removeManifestPermission(manifestPath, permission, deps) {
|
|
34
|
+
const modifications = [
|
|
35
|
+
{
|
|
36
|
+
xpath: `//uses-permission[@android:name="${permission}"]`,
|
|
37
|
+
action: 'removeElement'
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
return modifyManifest(manifestPath, modifications, deps);
|
|
41
|
+
}
|
|
42
|
+
export function hasManifestPermission(manifestPath, permission, deps) {
|
|
43
|
+
try {
|
|
44
|
+
const content = deps.readFileSync(manifestPath, 'utf-8');
|
|
45
|
+
const parser = new deps.xmlParser();
|
|
46
|
+
const doc = parser.parseFromString(content, 'text/xml');
|
|
47
|
+
const elements = doc.getElementsByTagName('uses-permission');
|
|
48
|
+
for (let i = 0; i < elements.length; i++) {
|
|
49
|
+
const element = elements.item(i);
|
|
50
|
+
if (element) {
|
|
51
|
+
const nameAttr = element.getAttribute('android:name');
|
|
52
|
+
if (nameAttr === permission) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function getManifestPermissions(manifestPath, deps) {
|
|
64
|
+
try {
|
|
65
|
+
const content = deps.readFileSync(manifestPath, 'utf-8');
|
|
66
|
+
const parser = new deps.xmlParser();
|
|
67
|
+
const doc = parser.parseFromString(content, 'text/xml');
|
|
68
|
+
const permissions = [];
|
|
69
|
+
const elements = doc.getElementsByTagName('uses-permission');
|
|
70
|
+
for (let i = 0; i < elements.length; i++) {
|
|
71
|
+
const element = elements.item(i);
|
|
72
|
+
if (element) {
|
|
73
|
+
const nameAttr = element.getAttribute('android:name');
|
|
74
|
+
if (nameAttr) {
|
|
75
|
+
permissions.push(nameAttr);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return permissions;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../../src/functions/platform/android/permission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FileSystem, Path } from '../../../references/node.d';
|
|
2
|
+
import type { Sharp } from '../../../references/sharp.d';
|
|
3
|
+
export interface ConfigureAppIconIOSDeps {
|
|
4
|
+
existsSync: FileSystem['existsSync'];
|
|
5
|
+
readFileSync: FileSystem['readFileSync'];
|
|
6
|
+
writeFileSync: FileSystem['writeFileSync'];
|
|
7
|
+
mkdirSync: FileSystem['mkdirSync'];
|
|
8
|
+
join: Path['join'];
|
|
9
|
+
dirname: Path['dirname'];
|
|
10
|
+
sharp: Sharp;
|
|
11
|
+
}
|
|
12
|
+
export interface ConfigureAppIconIOSResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
error?: string;
|
|
15
|
+
logs: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function configureAppIconIOS(imagePath: string, projectPath: string, projectName: string, deps: ConfigureAppIconIOSDeps): Promise<ConfigureAppIconIOSResult>;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const IOS_ICON_SIZES = [
|
|
2
|
+
{ idiom: 'iphone', scale: '2x', size: '20x20', pixels: 40 },
|
|
3
|
+
{ idiom: 'iphone', scale: '3x', size: '20x20', pixels: 60 },
|
|
4
|
+
{ idiom: 'iphone', scale: '2x', size: '29x29', pixels: 58 },
|
|
5
|
+
{ idiom: 'iphone', scale: '3x', size: '29x29', pixels: 87 },
|
|
6
|
+
{ idiom: 'iphone', scale: '2x', size: '40x40', pixels: 80 },
|
|
7
|
+
{ idiom: 'iphone', scale: '3x', size: '40x40', pixels: 120 },
|
|
8
|
+
{ idiom: 'iphone', scale: '2x', size: '60x60', pixels: 120 },
|
|
9
|
+
{ idiom: 'iphone', scale: '3x', size: '60x60', pixels: 180 },
|
|
10
|
+
{ idiom: 'ipad', scale: '1x', size: '20x20', pixels: 20 },
|
|
11
|
+
{ idiom: 'ipad', scale: '2x', size: '20x20', pixels: 40 },
|
|
12
|
+
{ idiom: 'ipad', scale: '1x', size: '29x29', pixels: 29 },
|
|
13
|
+
{ idiom: 'ipad', scale: '2x', size: '29x29', pixels: 58 },
|
|
14
|
+
{ idiom: 'ipad', scale: '1x', size: '40x40', pixels: 40 },
|
|
15
|
+
{ idiom: 'ipad', scale: '2x', size: '40x40', pixels: 80 },
|
|
16
|
+
{ idiom: 'ipad', scale: '1x', size: '76x76', pixels: 76 },
|
|
17
|
+
{ idiom: 'ipad', scale: '2x', size: '76x76', pixels: 152 },
|
|
18
|
+
{ idiom: 'ipad', scale: '2x', size: '83.5x83.5', pixels: 167 },
|
|
19
|
+
{ idiom: 'ios-marketing', scale: '1x', size: '1024x1024', pixels: 1024 }
|
|
20
|
+
];
|
|
21
|
+
const DCLOUD_ICON_SIZES = [
|
|
22
|
+
{ filename: 'icon29.png', size: 29 },
|
|
23
|
+
{ filename: 'icon40.png', size: 40 },
|
|
24
|
+
{ filename: 'icon50.png', size: 50 },
|
|
25
|
+
{ filename: 'icon57.png', size: 57 },
|
|
26
|
+
{ filename: 'icon58.png', size: 58 },
|
|
27
|
+
{ filename: 'icon60.png', size: 60 },
|
|
28
|
+
{ filename: 'icon72.png', size: 72 },
|
|
29
|
+
{ filename: 'icon76.png', size: 76 },
|
|
30
|
+
{ filename: 'icon80.png', size: 80 },
|
|
31
|
+
{ filename: 'icon87.png', size: 87 },
|
|
32
|
+
{ filename: 'icon100.png', size: 100 },
|
|
33
|
+
{ filename: 'icon114.png', size: 114 },
|
|
34
|
+
{ filename: 'icon120.png', size: 120 },
|
|
35
|
+
{ filename: 'icon144.png', size: 144 },
|
|
36
|
+
{ filename: 'icon152.png', size: 152 },
|
|
37
|
+
{ filename: 'icon180.png', size: 180 },
|
|
38
|
+
{ filename: 'icon1024.png', size: 1024 }
|
|
39
|
+
];
|
|
40
|
+
export async function configureAppIconIOS(imagePath, projectPath, projectName, deps) {
|
|
41
|
+
const logs = [];
|
|
42
|
+
try {
|
|
43
|
+
if (!deps.existsSync(imagePath)) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: `原始图片不存在: ${imagePath}`,
|
|
47
|
+
logs
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
logs.push(`找到原始图标图片: ${imagePath}`);
|
|
51
|
+
const imageBuffer = deps.readFileSync(imagePath);
|
|
52
|
+
logs.push('成功读取原始图片');
|
|
53
|
+
const sharpInstance = deps.sharp(imageBuffer);
|
|
54
|
+
const metadata = await sharpInstance.metadata();
|
|
55
|
+
const originalWidth = metadata.width || 1024;
|
|
56
|
+
const originalHeight = metadata.height || 1024;
|
|
57
|
+
logs.push(`原图尺寸: ${originalWidth}x${originalHeight}`);
|
|
58
|
+
if (originalWidth !== originalHeight) {
|
|
59
|
+
logs.push(`警告: 图标图片不是正方形 (${originalWidth}x${originalHeight}),将进行裁剪处理`);
|
|
60
|
+
}
|
|
61
|
+
const possibleAssetsPaths = [
|
|
62
|
+
deps.join(projectPath, projectName, 'Assets.xcassets'),
|
|
63
|
+
deps.join(projectPath, projectName, 'Images.xcassets'),
|
|
64
|
+
deps.join(projectPath, 'HBuilder', 'Images.xcassets'),
|
|
65
|
+
deps.join(projectPath, 'HBuilder', 'Assets.xcassets')
|
|
66
|
+
];
|
|
67
|
+
let assetsPath = null;
|
|
68
|
+
for (const p of possibleAssetsPaths) {
|
|
69
|
+
if (deps.existsSync(p)) {
|
|
70
|
+
assetsPath = p;
|
|
71
|
+
logs.push(`找到资源目录: ${p}`);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (assetsPath) {
|
|
76
|
+
const appIconSetPath = deps.join(assetsPath, 'AppIcon.appiconset');
|
|
77
|
+
if (!deps.existsSync(appIconSetPath)) {
|
|
78
|
+
deps.mkdirSync(appIconSetPath, { recursive: true });
|
|
79
|
+
logs.push(`创建 AppIcon.appiconset 目录`);
|
|
80
|
+
}
|
|
81
|
+
logs.push('开始生成 AppIcon.appiconset 图标...');
|
|
82
|
+
const contentsImages = [];
|
|
83
|
+
for (const sizeConfig of IOS_ICON_SIZES) {
|
|
84
|
+
const filename = `AppIcon-${sizeConfig.pixels}.png`;
|
|
85
|
+
const outputPath = deps.join(appIconSetPath, filename);
|
|
86
|
+
const resizedIcon = await deps.sharp(imageBuffer)
|
|
87
|
+
.resize(sizeConfig.pixels, sizeConfig.pixels, {
|
|
88
|
+
fit: 'cover',
|
|
89
|
+
position: 'center'
|
|
90
|
+
})
|
|
91
|
+
.png()
|
|
92
|
+
.toBuffer();
|
|
93
|
+
deps.writeFileSync(outputPath, resizedIcon);
|
|
94
|
+
logs.push(`已生成 ${filename} (${sizeConfig.pixels}x${sizeConfig.pixels})`);
|
|
95
|
+
contentsImages.push({
|
|
96
|
+
filename,
|
|
97
|
+
idiom: sizeConfig.idiom,
|
|
98
|
+
scale: sizeConfig.scale,
|
|
99
|
+
size: sizeConfig.size
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const contentsJson = {
|
|
103
|
+
images: contentsImages,
|
|
104
|
+
info: {
|
|
105
|
+
author: 'xcode',
|
|
106
|
+
version: 1
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const contentsJsonPath = deps.join(appIconSetPath, 'Contents.json');
|
|
110
|
+
deps.writeFileSync(contentsJsonPath, JSON.stringify(contentsJson, null, 2), 'utf8');
|
|
111
|
+
logs.push('已生成 Contents.json');
|
|
112
|
+
logs.push(`AppIcon.appiconset 配置完成,共生成 ${IOS_ICON_SIZES.length} 个图标文件`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
logs.push('未找到 Assets.xcassets 或 Images.xcassets 目录,跳过 appiconset 生成');
|
|
116
|
+
}
|
|
117
|
+
const iconDir = deps.join(projectPath, projectName, 'icon');
|
|
118
|
+
if (deps.existsSync(iconDir)) {
|
|
119
|
+
logs.push('开始生成 DCloud 传统格式图标 (icon/ 目录)...');
|
|
120
|
+
for (const iconConfig of DCLOUD_ICON_SIZES) {
|
|
121
|
+
const outputPath = deps.join(iconDir, iconConfig.filename);
|
|
122
|
+
const resizedIcon = await deps.sharp(imageBuffer)
|
|
123
|
+
.resize(iconConfig.size, iconConfig.size, {
|
|
124
|
+
fit: 'cover',
|
|
125
|
+
position: 'center'
|
|
126
|
+
})
|
|
127
|
+
.png()
|
|
128
|
+
.toBuffer();
|
|
129
|
+
deps.writeFileSync(outputPath, resizedIcon);
|
|
130
|
+
logs.push(`已生成 ${iconConfig.filename} (${iconConfig.size}x${iconConfig.size})`);
|
|
131
|
+
}
|
|
132
|
+
logs.push(`DCloud 传统图标配置完成,共生成 ${DCLOUD_ICON_SIZES.length} 个图标文件`);
|
|
133
|
+
}
|
|
134
|
+
logs.push('iOS App Icon 配置完成');
|
|
135
|
+
return {
|
|
136
|
+
success: true,
|
|
137
|
+
logs
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
142
|
+
return {
|
|
143
|
+
success: false,
|
|
144
|
+
error: `配置 iOS App Icon 时出错: ${errorMessage}`,
|
|
145
|
+
logs
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=configureAppIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureAppIcon.js","sourceRoot":"","sources":["../../../../src/functions/platform/ios/configureAppIcon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FileSystem, Path } from '../../../references/node.d';
|
|
2
|
+
import type { Sharp } from '../../../references/sharp.d';
|
|
3
|
+
export interface ConfigureLaunchScreenDeps {
|
|
4
|
+
existsSync: FileSystem['existsSync'];
|
|
5
|
+
readFileSync: FileSystem['readFileSync'];
|
|
6
|
+
writeFileSync: FileSystem['writeFileSync'];
|
|
7
|
+
mkdirSync: FileSystem['mkdirSync'];
|
|
8
|
+
join: Path['join'];
|
|
9
|
+
dirname: Path['dirname'];
|
|
10
|
+
sharp: Sharp;
|
|
11
|
+
}
|
|
12
|
+
export interface ConfigureLaunchScreenResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
error?: string;
|
|
15
|
+
logs: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function configureLaunchScreen(imagePath: string, projectPath: string, projectName: string, deps: ConfigureLaunchScreenDeps): Promise<ConfigureLaunchScreenResult>;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export async function configureLaunchScreen(imagePath, projectPath, projectName, deps) {
|
|
2
|
+
const logs = [];
|
|
3
|
+
try {
|
|
4
|
+
if (!deps.existsSync(imagePath)) {
|
|
5
|
+
return {
|
|
6
|
+
success: false,
|
|
7
|
+
error: `原始图片不存在: ${imagePath}`,
|
|
8
|
+
logs
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
logs.push(`找到原始图片: ${imagePath}`);
|
|
12
|
+
const imageBuffer = deps.readFileSync(imagePath);
|
|
13
|
+
logs.push('成功读取原始图片');
|
|
14
|
+
const sharpInstance = deps.sharp(imageBuffer);
|
|
15
|
+
const metadata = await sharpInstance.metadata();
|
|
16
|
+
const originalWidth = metadata.width || 1000;
|
|
17
|
+
const originalHeight = metadata.height || 1000;
|
|
18
|
+
logs.push(`原图尺寸: ${originalWidth}x${originalHeight}`);
|
|
19
|
+
const possibleAssetsPaths = [
|
|
20
|
+
deps.join(projectPath, projectName, 'Assets.xcassets'),
|
|
21
|
+
deps.join(projectPath, projectName, 'Images.xcassets'),
|
|
22
|
+
deps.join(projectPath, 'HBuilder', 'Images.xcassets'),
|
|
23
|
+
deps.join(projectPath, 'HBuilder', 'Assets.xcassets')
|
|
24
|
+
];
|
|
25
|
+
let assetsPath = null;
|
|
26
|
+
for (const p of possibleAssetsPaths) {
|
|
27
|
+
if (deps.existsSync(p)) {
|
|
28
|
+
assetsPath = p;
|
|
29
|
+
logs.push(`找到资源目录: ${p}`);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (assetsPath) {
|
|
34
|
+
const imageSetPath = deps.join(assetsPath, 'LaunchImage.imageset');
|
|
35
|
+
if (!deps.existsSync(imageSetPath)) {
|
|
36
|
+
deps.mkdirSync(imageSetPath, { recursive: true });
|
|
37
|
+
logs.push(`创建 LaunchImage.imageset 目录`);
|
|
38
|
+
}
|
|
39
|
+
logs.push('开始生成不同分辨率的图片...');
|
|
40
|
+
const aspectRatio = originalWidth / originalHeight;
|
|
41
|
+
const height2x = 2000;
|
|
42
|
+
const width2x = Math.round(height2x * aspectRatio);
|
|
43
|
+
const image2x = await deps.sharp(imageBuffer)
|
|
44
|
+
.resize(width2x, height2x, {
|
|
45
|
+
fit: 'inside'
|
|
46
|
+
})
|
|
47
|
+
.png()
|
|
48
|
+
.toBuffer();
|
|
49
|
+
const image2xPath = deps.join(imageSetPath, 'LaunchImage@2x.png');
|
|
50
|
+
deps.writeFileSync(image2xPath, image2x);
|
|
51
|
+
logs.push(`已生成 @2x 版本 (${width2x}x${height2x})`);
|
|
52
|
+
const height3x = 3000;
|
|
53
|
+
const width3x = Math.round(height3x * aspectRatio);
|
|
54
|
+
const image3x = await deps.sharp(imageBuffer)
|
|
55
|
+
.resize(width3x, height3x, {
|
|
56
|
+
fit: 'inside'
|
|
57
|
+
})
|
|
58
|
+
.png()
|
|
59
|
+
.toBuffer();
|
|
60
|
+
const image3xPath = deps.join(imageSetPath, 'LaunchImage@3x.png');
|
|
61
|
+
deps.writeFileSync(image3xPath, image3x);
|
|
62
|
+
logs.push(`已生成 @3x 版本 (${width3x}x${height3x})`);
|
|
63
|
+
const contentsJson = {
|
|
64
|
+
images: [
|
|
65
|
+
{
|
|
66
|
+
idiom: 'universal',
|
|
67
|
+
filename: 'LaunchImage@2x.png',
|
|
68
|
+
scale: '2x'
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
idiom: 'universal',
|
|
72
|
+
filename: 'LaunchImage@3x.png',
|
|
73
|
+
scale: '3x'
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
info: {
|
|
77
|
+
version: 1,
|
|
78
|
+
author: 'xcode'
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const contentsJsonPath = deps.join(imageSetPath, 'Contents.json');
|
|
82
|
+
deps.writeFileSync(contentsJsonPath, JSON.stringify(contentsJson, null, 2), 'utf8');
|
|
83
|
+
logs.push('已创建 Contents.json');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
logs.push('未找到 Assets.xcassets 或 Images.xcassets 目录,跳过 imageset 生成');
|
|
87
|
+
}
|
|
88
|
+
const storyboardPath = deps.join(projectPath, projectName, 'LaunchScreen.storyboard');
|
|
89
|
+
const storyboardXml = generateLaunchScreenStoryboard();
|
|
90
|
+
deps.writeFileSync(storyboardPath, storyboardXml, 'utf8');
|
|
91
|
+
logs.push('已创建/更新 LaunchScreen.storyboard');
|
|
92
|
+
logs.push('启动屏配置完成');
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
logs
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
100
|
+
return {
|
|
101
|
+
success: false,
|
|
102
|
+
error: `配置启动屏时出错: ${errorMessage}`,
|
|
103
|
+
logs
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function generateLaunchScreenStoryboard() {
|
|
108
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
109
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
|
110
|
+
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
|
111
|
+
<dependencies>
|
|
112
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
|
|
113
|
+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
|
114
|
+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
115
|
+
</dependencies>
|
|
116
|
+
<scenes>
|
|
117
|
+
<!--View Controller-->
|
|
118
|
+
<scene sceneID="EHf-IW-A2E">
|
|
119
|
+
<objects>
|
|
120
|
+
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
|
121
|
+
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
|
122
|
+
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
|
123
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
124
|
+
<subviews>
|
|
125
|
+
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="launch-image-view">
|
|
126
|
+
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
|
127
|
+
</imageView>
|
|
128
|
+
</subviews>
|
|
129
|
+
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
|
130
|
+
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
131
|
+
<constraints>
|
|
132
|
+
<constraint firstItem="launch-image-view" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="constraint-1"/>
|
|
133
|
+
<constraint firstItem="launch-image-view" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="constraint-2"/>
|
|
134
|
+
<constraint firstAttribute="trailing" secondItem="launch-image-view" secondAttribute="trailing" id="constraint-3"/>
|
|
135
|
+
<constraint firstAttribute="bottom" secondItem="launch-image-view" secondAttribute="bottom" id="constraint-4"/>
|
|
136
|
+
</constraints>
|
|
137
|
+
</view>
|
|
138
|
+
</viewController>
|
|
139
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
140
|
+
</objects>
|
|
141
|
+
<point key="canvasLocation" x="53" y="375"/>
|
|
142
|
+
</scene>
|
|
143
|
+
</scenes>
|
|
144
|
+
<resources>
|
|
145
|
+
<image name="LaunchImage" width="924" height="2000"/>
|
|
146
|
+
</resources>
|
|
147
|
+
</document>
|
|
148
|
+
`;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=configureLaunchScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureLaunchScreen.js","sourceRoot":"","sources":["../../../../src/functions/platform/ios/configureLaunchScreen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FileSystem } from '../../../references/node.d';
|
|
2
|
+
import type { XMLParserConstructor, XMLSerializerConstructor } from '../../../references/xml.d';
|
|
3
|
+
export interface ConfigureIOSPermissionsDeps {
|
|
4
|
+
existsSync: FileSystem['existsSync'];
|
|
5
|
+
readFileSync: FileSystem['readFileSync'];
|
|
6
|
+
writeFileSync: FileSystem['writeFileSync'];
|
|
7
|
+
xmlParser: XMLParserConstructor;
|
|
8
|
+
xmlSerializer: XMLSerializerConstructor;
|
|
9
|
+
}
|
|
10
|
+
export interface ConfigureIOSPermissionsResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
error?: string;
|
|
13
|
+
logs: string[];
|
|
14
|
+
data?: {
|
|
15
|
+
added: number;
|
|
16
|
+
skipped: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function configureIOSPermissions(infoPlistPath: string, permissions: string[], customDescriptions?: Record<string, string>, deps?: ConfigureIOSPermissionsDeps): Promise<ConfigureIOSPermissionsResult>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { modifyInfoPlistKeyValue } from './modifyInfoPlistKeyValue';
|
|
2
|
+
const PERMISSION_MAPPING = {
|
|
3
|
+
'CAMERA': 'NSCameraUsageDescription',
|
|
4
|
+
'READ_EXTERNAL_STORAGE': 'NSPhotoLibraryUsageDescription',
|
|
5
|
+
'WRITE_EXTERNAL_STORAGE': 'NSPhotoLibraryAddUsageDescription',
|
|
6
|
+
'ACCESS_FINE_LOCATION': 'NSLocationWhenInUseUsageDescription',
|
|
7
|
+
'ACCESS_COARSE_LOCATION': 'NSLocationWhenInUseUsageDescription',
|
|
8
|
+
'RECORD_AUDIO': 'NSMicrophoneUsageDescription',
|
|
9
|
+
'READ_CONTACTS': 'NSContactsUsageDescription',
|
|
10
|
+
'WRITE_CONTACTS': 'NSContactsUsageDescription',
|
|
11
|
+
'READ_CALENDAR': 'NSCalendarsUsageDescription',
|
|
12
|
+
'WRITE_CALENDAR': 'NSCalendarsUsageDescription',
|
|
13
|
+
'READ_PHONE_STATE': 'NSUserTrackingUsageDescription',
|
|
14
|
+
'BLUETOOTH': 'NSBluetoothAlwaysUsageDescription',
|
|
15
|
+
'BLUETOOTH_ADMIN': 'NSBluetoothAlwaysUsageDescription',
|
|
16
|
+
'ACTIVITY_RECOGNITION': 'NSMotionUsageDescription',
|
|
17
|
+
'BODY_SENSORS': 'NSMotionUsageDescription',
|
|
18
|
+
'FACE_ID': 'NSFaceIDUsageDescription',
|
|
19
|
+
};
|
|
20
|
+
const DEFAULT_DESCRIPTIONS = {
|
|
21
|
+
'NSCameraUsageDescription': '应用需要使用相机来拍摄照片和视频',
|
|
22
|
+
'NSPhotoLibraryUsageDescription': '应用需要访问您的相册以选择图片',
|
|
23
|
+
'NSPhotoLibraryAddUsageDescription': '应用需要保存图片到您的相册',
|
|
24
|
+
'NSLocationWhenInUseUsageDescription': '应用需要获取您的位置信息以提供更好的服务',
|
|
25
|
+
'NSLocationAlwaysAndWhenInUseUsageDescription': '应用需要获取您的位置信息以提供更好的服务',
|
|
26
|
+
'NSMicrophoneUsageDescription': '应用需要使用麦克风来录制音频',
|
|
27
|
+
'NSContactsUsageDescription': '应用需要访问您的通讯录',
|
|
28
|
+
'NSCalendarsUsageDescription': '应用需要访问您的日历',
|
|
29
|
+
'NSRemindersUsageDescription': '应用需要访问您的提醒事项',
|
|
30
|
+
'NSMotionUsageDescription': '应用需要访问您的运动与健身数据',
|
|
31
|
+
'NSHealthShareUsageDescription': '应用需要读取您的健康数据',
|
|
32
|
+
'NSHealthUpdateUsageDescription': '应用需要更新您的健康数据',
|
|
33
|
+
'NSBluetoothPeripheralUsageDescription': '应用需要使用蓝牙',
|
|
34
|
+
'NSBluetoothAlwaysUsageDescription': '应用需要使用蓝牙',
|
|
35
|
+
'NSSpeechRecognitionUsageDescription': '应用需要使用语音识别功能',
|
|
36
|
+
'NSFaceIDUsageDescription': '应用需要使用 Face ID 进行身份验证',
|
|
37
|
+
'NSAppleMusicUsageDescription': '应用需要访问您的 Apple Music',
|
|
38
|
+
'NSLocalNetworkUsageDescription': '应用需要访问本地网络',
|
|
39
|
+
'NSUserTrackingUsageDescription': '应用需要追踪您的活动以提供个性化广告',
|
|
40
|
+
};
|
|
41
|
+
export async function configureIOSPermissions(infoPlistPath, permissions, customDescriptions, deps) {
|
|
42
|
+
const logs = [];
|
|
43
|
+
if (!deps) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: 'deps 参数是必需的',
|
|
47
|
+
logs
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
if (!deps.existsSync(infoPlistPath)) {
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
error: `Info.plist 文件不存在: ${infoPlistPath}`,
|
|
55
|
+
logs
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const xmlContent = deps.readFileSync(infoPlistPath, 'utf8');
|
|
59
|
+
const parser = new deps.xmlParser();
|
|
60
|
+
const xmlDoc = parser.parseFromString(xmlContent, 'text/xml');
|
|
61
|
+
const existingKeys = new Set();
|
|
62
|
+
const keyElements = xmlDoc.getElementsByTagName('key');
|
|
63
|
+
for (let i = 0; i < keyElements.length; i++) {
|
|
64
|
+
const keyElement = keyElements[i];
|
|
65
|
+
const keyName = keyElement.textContent;
|
|
66
|
+
if (keyName && keyName.startsWith('NS') && keyName.includes('UsageDescription')) {
|
|
67
|
+
existingKeys.add(keyName);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const iosPermissionKeys = new Set();
|
|
71
|
+
for (const permission of permissions) {
|
|
72
|
+
const cleanPermission = permission.replace(/^android\.permission\./i, '').toUpperCase();
|
|
73
|
+
const iosKey = PERMISSION_MAPPING[cleanPermission];
|
|
74
|
+
if (iosKey) {
|
|
75
|
+
iosPermissionKeys.add(iosKey);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
logs.push(`警告: 未找到权限 ${permission} 对应的 iOS 权限 key,已跳过`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const permissionsToAdd = Array.from(iosPermissionKeys).filter(key => !existingKeys.has(key));
|
|
82
|
+
if (permissionsToAdd.length === 0) {
|
|
83
|
+
logs.push('所有权限已存在,无需添加');
|
|
84
|
+
return {
|
|
85
|
+
success: true,
|
|
86
|
+
logs,
|
|
87
|
+
data: {
|
|
88
|
+
added: 0,
|
|
89
|
+
skipped: iosPermissionKeys.size
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
for (const iosKey of permissionsToAdd) {
|
|
94
|
+
const description = customDescriptions?.[iosKey] || DEFAULT_DESCRIPTIONS[iosKey] || '应用需要使用此功能';
|
|
95
|
+
modifyInfoPlistKeyValue(xmlDoc, iosKey, description, 'string');
|
|
96
|
+
logs.push(`已添加权限: ${iosKey}`);
|
|
97
|
+
}
|
|
98
|
+
const serializer = new deps.xmlSerializer();
|
|
99
|
+
const newXmlContent = serializer.serializeToString(xmlDoc);
|
|
100
|
+
deps.writeFileSync(infoPlistPath, newXmlContent, 'utf8');
|
|
101
|
+
logs.push(`权限配置完成,共添加 ${permissionsToAdd.length} 个权限`);
|
|
102
|
+
return {
|
|
103
|
+
success: true,
|
|
104
|
+
logs,
|
|
105
|
+
data: {
|
|
106
|
+
added: permissionsToAdd.length,
|
|
107
|
+
skipped: iosPermissionKeys.size - permissionsToAdd.length
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
error: `配置 iOS 权限时出错: ${errorMessage}`,
|
|
116
|
+
logs
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=configurePermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurePermissions.js","sourceRoot":"","sources":["../../../../src/functions/platform/ios/configurePermissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FileSystem, Path, ChildProcess } from "../../../references/node.d";
|
|
2
|
+
import type { JSON5Parser } from "../../../references/json5.d";
|
|
3
|
+
import type { XMLParserConstructor, XMLSerializerConstructor } from "../../../references/xml.d";
|
|
4
|
+
import type { setTimeout, clearTimeout } from "../../../references/timer.d";
|
|
5
|
+
export interface IntegrateNativePluginIOSDeps {
|
|
6
|
+
existsSync: FileSystem["existsSync"];
|
|
7
|
+
readFileSync: FileSystem["readFileSync"];
|
|
8
|
+
writeFileSync: FileSystem["writeFileSync"];
|
|
9
|
+
copyFileSync: FileSystem["copyFileSync"];
|
|
10
|
+
statSync: FileSystem["statSync"];
|
|
11
|
+
mkdirSync: FileSystem["mkdirSync"];
|
|
12
|
+
readdirSync: FileSystem["readdirSync"];
|
|
13
|
+
cp: FileSystem["promises"]["cp"];
|
|
14
|
+
join: Path["join"];
|
|
15
|
+
dirname: Path["dirname"];
|
|
16
|
+
basename: Path["basename"];
|
|
17
|
+
exec: ChildProcess["exec"];
|
|
18
|
+
parse: JSON5Parser["parse"];
|
|
19
|
+
xmlParser: XMLParserConstructor;
|
|
20
|
+
xmlSerializer: XMLSerializerConstructor;
|
|
21
|
+
setTimeout: typeof setTimeout;
|
|
22
|
+
clearTimeout: typeof clearTimeout;
|
|
23
|
+
log?: (message: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface NativePluginItem {
|
|
26
|
+
type: string;
|
|
27
|
+
name: string;
|
|
28
|
+
class: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function integrateNativePluginIOS(projectPath: string, projectName: string, pluginPath: string, deps: IntegrateNativePluginIOSDeps, parameters?: Record<string, string>): Promise<{
|
|
31
|
+
success: boolean;
|
|
32
|
+
message?: string;
|
|
33
|
+
error?: string;
|
|
34
|
+
logs: string[];
|
|
35
|
+
}>;
|