zcw-shared 1.2.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/README.md +610 -0
- package/assets/logo-colorful.svg +18 -0
- package/assets/logo-name.svg +7 -0
- package/assets/logo-transparent.svg +14 -0
- package/assets/logo.svg +8 -0
- package/dist/functions/ag-grid/generateLicense.d.ts +4 -0
- package/dist/functions/ag-grid/generateLicense.js +12 -0
- package/dist/functions/ag-grid/generateLicense.js.map +1 -0
- package/dist/functions/altool/createAltoolClient.d.ts +21 -0
- package/dist/functions/altool/createAltoolClient.js +59 -0
- package/dist/functions/altool/createAltoolClient.js.map +1 -0
- package/dist/functions/altool/getAppInfo.d.ts +13 -0
- package/dist/functions/altool/getAppInfo.js +92 -0
- package/dist/functions/altool/getAppInfo.js.map +1 -0
- package/dist/functions/altool/index.d.ts +10 -0
- package/dist/functions/altool/index.js +6 -0
- package/dist/functions/altool/index.js.map +1 -0
- package/dist/functions/altool/isApiKeyAuth.d.ts +2 -0
- package/dist/functions/altool/isApiKeyAuth.js +4 -0
- package/dist/functions/altool/isApiKeyAuth.js.map +1 -0
- package/dist/functions/altool/isCredentialsAuth.d.ts +2 -0
- package/dist/functions/altool/isCredentialsAuth.js +4 -0
- package/dist/functions/altool/isCredentialsAuth.js.map +1 -0
- package/dist/functions/altool/types.d.ts +26 -0
- package/dist/functions/altool/types.js +7 -0
- package/dist/functions/altool/types.js.map +1 -0
- package/dist/functions/altool/uploadApp.d.ts +6 -0
- package/dist/functions/altool/uploadApp.js +36 -0
- package/dist/functions/altool/uploadApp.js.map +1 -0
- package/dist/functions/altool/validateApp.d.ts +17 -0
- package/dist/functions/altool/validateApp.js +59 -0
- package/dist/functions/altool/validateApp.js.map +1 -0
- package/dist/functions/base64/strToBase64.d.ts +2 -0
- package/dist/functions/base64/strToBase64.js +6 -0
- package/dist/functions/base64/strToBase64.js.map +1 -0
- package/dist/functions/color-converter/COLOR_PATTERNS.d.ts +2 -0
- package/dist/functions/color-converter/COLOR_PATTERNS.js +9 -0
- package/dist/functions/color-converter/COLOR_PATTERNS.js.map +1 -0
- package/dist/functions/color-converter/colorPatterns.d.ts +4 -0
- package/dist/functions/color-converter/colorPatterns.js +41 -0
- package/dist/functions/color-converter/colorPatterns.js.map +1 -0
- package/dist/functions/color-converter/convertColor.d.ts +6 -0
- package/dist/functions/color-converter/convertColor.js +238 -0
- package/dist/functions/color-converter/convertColor.js.map +1 -0
- package/dist/functions/color-converter/detectColorFormat.d.ts +2 -0
- package/dist/functions/color-converter/detectColorFormat.js +19 -0
- package/dist/functions/color-converter/detectColorFormat.js.map +1 -0
- package/dist/functions/color-converter/getColorPatterns.d.ts +2 -0
- package/dist/functions/color-converter/getColorPatterns.js +11 -0
- package/dist/functions/color-converter/getColorPatterns.js.map +1 -0
- package/dist/functions/color-converter/getNamedColorMap.d.ts +2 -0
- package/dist/functions/color-converter/getNamedColorMap.js +19 -0
- package/dist/functions/color-converter/getNamedColorMap.js.map +1 -0
- package/dist/functions/color-converter/hexToRgb.d.ts +2 -0
- package/dist/functions/color-converter/hexToRgb.js +42 -0
- package/dist/functions/color-converter/hexToRgb.js.map +1 -0
- package/dist/functions/color-converter/hslToRgb.d.ts +2 -0
- package/dist/functions/color-converter/hslToRgb.js +78 -0
- package/dist/functions/color-converter/hslToRgb.js.map +1 -0
- package/dist/functions/color-converter/hueToRgb.d.ts +1 -0
- package/dist/functions/color-converter/hueToRgb.js +14 -0
- package/dist/functions/color-converter/hueToRgb.js.map +1 -0
- package/dist/functions/color-converter/isColorValue.d.ts +2 -0
- package/dist/functions/color-converter/isColorValue.js +79 -0
- package/dist/functions/color-converter/isColorValue.js.map +1 -0
- package/dist/functions/color-converter/normalizeColor.d.ts +1 -0
- package/dist/functions/color-converter/normalizeColor.js +49 -0
- package/dist/functions/color-converter/normalizeColor.js.map +1 -0
- package/dist/functions/color-converter/parseColorString.d.ts +15 -0
- package/dist/functions/color-converter/parseColorString.js +116 -0
- package/dist/functions/color-converter/parseColorString.js.map +1 -0
- package/dist/functions/color-converter/rgbToHex.d.ts +2 -0
- package/dist/functions/color-converter/rgbToHex.js +65 -0
- package/dist/functions/color-converter/rgbToHex.js.map +1 -0
- package/dist/functions/color-converter/standardizeColor.d.ts +1 -0
- package/dist/functions/color-converter/standardizeColor.js +147 -0
- package/dist/functions/color-converter/standardizeColor.js.map +1 -0
- package/dist/functions/debug/createDebugger.d.ts +20 -0
- package/dist/functions/debug/createDebugger.js +79 -0
- package/dist/functions/debug/createDebugger.js.map +1 -0
- package/dist/functions/desensitize/desensitizeName.d.ts +1 -0
- package/dist/functions/desensitize/desensitizeName.js +8 -0
- package/dist/functions/desensitize/desensitizeName.js.map +1 -0
- package/dist/functions/desensitize/desensitizePhone.d.ts +1 -0
- package/dist/functions/desensitize/desensitizePhone.js +8 -0
- package/dist/functions/desensitize/desensitizePhone.js.map +1 -0
- package/dist/functions/dom/detectOverflow.d.ts +8 -0
- package/dist/functions/dom/detectOverflow.js +17 -0
- package/dist/functions/dom/detectOverflow.js.map +1 -0
- package/dist/functions/dom/getElementRect.d.ts +3 -0
- package/dist/functions/dom/getElementRect.js +14 -0
- package/dist/functions/dom/getElementRect.js.map +1 -0
- package/dist/functions/dom/getRelativePosition.d.ts +3 -0
- package/dist/functions/dom/getRelativePosition.js +14 -0
- package/dist/functions/dom/getRelativePosition.js.map +1 -0
- package/dist/functions/dom/getViewportRect.d.ts +3 -0
- package/dist/functions/dom/getViewportRect.js +15 -0
- package/dist/functions/dom/getViewportRect.js.map +1 -0
- package/dist/functions/dom/getViewportSize.d.ts +5 -0
- package/dist/functions/dom/getViewportSize.js +7 -0
- package/dist/functions/dom/getViewportSize.js.map +1 -0
- package/dist/functions/image/generateMacIcons.d.ts +6 -0
- package/dist/functions/image/generateMacIcons.js +15 -0
- package/dist/functions/image/generateMacIcons.js.map +1 -0
- package/dist/functions/image/generateMacTrayIcon.d.ts +7 -0
- package/dist/functions/image/generateMacTrayIcon.js +15 -0
- package/dist/functions/image/generateMacTrayIcon.js.map +1 -0
- package/dist/functions/image/generatePaddedImage.d.ts +3 -0
- package/dist/functions/image/generatePaddedImage.js +14 -0
- package/dist/functions/image/generatePaddedImage.js.map +1 -0
- package/dist/functions/image/generatePwaIcons.d.ts +6 -0
- package/dist/functions/image/generatePwaIcons.js +15 -0
- package/dist/functions/image/generatePwaIcons.js.map +1 -0
- package/dist/functions/image/generateRoundedImage.d.ts +3 -0
- package/dist/functions/image/generateRoundedImage.js +17 -0
- package/dist/functions/image/generateRoundedImage.js.map +1 -0
- package/dist/functions/ipc/dispatchIpcRequest.d.ts +6 -0
- package/dist/functions/ipc/dispatchIpcRequest.js +10 -0
- package/dist/functions/ipc/dispatchIpcRequest.js.map +1 -0
- package/dist/functions/software/buildPathExecutables.d.ts +1 -0
- package/dist/functions/software/buildPathExecutables.js +4 -0
- package/dist/functions/software/buildPathExecutables.js.map +1 -0
- package/dist/functions/software/buildSoftwarePaths.d.ts +2 -0
- package/dist/functions/software/buildSoftwarePaths.js +22 -0
- package/dist/functions/software/buildSoftwarePaths.js.map +1 -0
- package/dist/functions/software/createConfigGenerator.d.ts +8 -0
- package/dist/functions/software/createConfigGenerator.js +13 -0
- package/dist/functions/software/createConfigGenerator.js.map +1 -0
- package/dist/functions/software/detectPlatform.d.ts +2 -0
- package/dist/functions/software/detectPlatform.js +4 -0
- package/dist/functions/software/detectPlatform.js.map +1 -0
- package/dist/functions/software/find.d.ts +2 -0
- package/dist/functions/software/find.js +12 -0
- package/dist/functions/software/find.js.map +1 -0
- package/dist/functions/software/findSoftware.d.ts +14 -0
- package/dist/functions/software/findSoftware.js +29 -0
- package/dist/functions/software/findSoftware.js.map +1 -0
- package/dist/functions/software/findSoftwareWithGenerator.d.ts +3 -0
- package/dist/functions/software/findSoftwareWithGenerator.js +8 -0
- package/dist/functions/software/findSoftwareWithGenerator.js.map +1 -0
- package/dist/functions/software/getConfigGenerator.d.ts +2 -0
- package/dist/functions/software/getConfigGenerator.js +10 -0
- package/dist/functions/software/getConfigGenerator.js.map +1 -0
- package/dist/functions/software/getEnvironmentSoftwarePath.d.ts +1 -0
- package/dist/functions/software/getEnvironmentSoftwarePath.js +4 -0
- package/dist/functions/software/getEnvironmentSoftwarePath.js.map +1 -0
- package/dist/functions/software/getSupportedSoftware.d.ts +1 -0
- package/dist/functions/software/getSupportedSoftware.js +5 -0
- package/dist/functions/software/getSupportedSoftware.js.map +1 -0
- package/dist/functions/software/parseEnvironmentPaths.d.ts +1 -0
- package/dist/functions/software/parseEnvironmentPaths.js +7 -0
- package/dist/functions/software/parseEnvironmentPaths.js.map +1 -0
- package/dist/functions/software/softwareConfigs.d.ts +2 -0
- package/dist/functions/software/softwareConfigs.js +148 -0
- package/dist/functions/software/softwareConfigs.js.map +1 -0
- package/dist/functions/software/softwareNameMap.d.ts +1 -0
- package/dist/functions/software/softwareNameMap.js +9 -0
- package/dist/functions/software/softwareNameMap.js.map +1 -0
- package/dist/functions/software/types.d.ts +11 -0
- package/dist/functions/software/types.js +2 -0
- package/dist/functions/software/types.js.map +1 -0
- package/dist/functions/string/camelCase.d.ts +1 -0
- package/dist/functions/string/camelCase.js +8 -0
- package/dist/functions/string/camelCase.js.map +1 -0
- package/dist/functions/string/capitalize.d.ts +1 -0
- package/dist/functions/string/capitalize.js +6 -0
- package/dist/functions/string/capitalize.js.map +1 -0
- package/dist/functions/string/escape.d.ts +1 -0
- package/dist/functions/string/escape.js +13 -0
- package/dist/functions/string/escape.js.map +1 -0
- package/dist/functions/string/kebabCase.d.ts +1 -0
- package/dist/functions/string/kebabCase.js +10 -0
- package/dist/functions/string/kebabCase.js.map +1 -0
- package/dist/functions/string/levenshtein.d.ts +1 -0
- package/dist/functions/string/levenshtein.js +27 -0
- package/dist/functions/string/levenshtein.js.map +1 -0
- package/dist/functions/string/mask.d.ts +1 -0
- package/dist/functions/string/mask.js +40 -0
- package/dist/functions/string/mask.js.map +1 -0
- package/dist/functions/string/normalize.d.ts +8 -0
- package/dist/functions/string/normalize.js +37 -0
- package/dist/functions/string/normalize.js.map +1 -0
- package/dist/functions/string/padEnd.d.ts +1 -0
- package/dist/functions/string/padEnd.js +8 -0
- package/dist/functions/string/padEnd.js.map +1 -0
- package/dist/functions/string/padStart.d.ts +1 -0
- package/dist/functions/string/padStart.js +8 -0
- package/dist/functions/string/padStart.js.map +1 -0
- package/dist/functions/string/palindrome.d.ts +3 -0
- package/dist/functions/string/palindrome.js +15 -0
- package/dist/functions/string/palindrome.js.map +1 -0
- package/dist/functions/string/pascalCase.d.ts +1 -0
- package/dist/functions/string/pascalCase.js +8 -0
- package/dist/functions/string/pascalCase.js.map +1 -0
- package/dist/functions/string/similarity.d.ts +1 -0
- package/dist/functions/string/similarity.js +38 -0
- package/dist/functions/string/similarity.js.map +1 -0
- package/dist/functions/string/snakeCase.d.ts +1 -0
- package/dist/functions/string/snakeCase.js +10 -0
- package/dist/functions/string/snakeCase.js.map +1 -0
- package/dist/functions/string/template.d.ts +4 -0
- package/dist/functions/string/template.js +21 -0
- package/dist/functions/string/template.js.map +1 -0
- package/dist/functions/string/unescape.d.ts +1 -0
- package/dist/functions/string/unescape.js +13 -0
- package/dist/functions/string/unescape.js.map +1 -0
- package/dist/functions/string/wordCount.d.ts +5 -0
- package/dist/functions/string/wordCount.js +11 -0
- package/dist/functions/string/wordCount.js.map +1 -0
- package/dist/functions/tencent-cloud/getSecret.d.ts +7 -0
- package/dist/functions/tencent-cloud/getSecret.js +19 -0
- package/dist/functions/tencent-cloud/getSecret.js.map +1 -0
- package/dist/functions/uniapp/app-plus/androidProjectConfigSteps.d.ts +13 -0
- package/dist/functions/uniapp/app-plus/androidProjectConfigSteps.js +175 -0
- package/dist/functions/uniapp/app-plus/androidProjectConfigSteps.js.map +1 -0
- package/dist/functions/uniapp/app-plus/androidProjectStrategy.d.ts +33 -0
- package/dist/functions/uniapp/app-plus/androidProjectStrategy.js +60 -0
- package/dist/functions/uniapp/app-plus/androidProjectStrategy.js.map +1 -0
- package/dist/functions/uniapp/app-plus/buildAndroidApp.d.ts +2 -0
- package/dist/functions/uniapp/app-plus/buildAndroidApp.js +75 -0
- package/dist/functions/uniapp/app-plus/buildAndroidApp.js.map +1 -0
- package/dist/functions/uniapp/app-plus/buildAndroidProject.d.ts +3 -0
- package/dist/functions/uniapp/app-plus/buildAndroidProject.js +60 -0
- package/dist/functions/uniapp/app-plus/buildAndroidProject.js.map +1 -0
- package/dist/functions/uniapp/app-plus/configureAndroidManifest.d.ts +5 -0
- package/dist/functions/uniapp/app-plus/configureAndroidManifest.js +51 -0
- package/dist/functions/uniapp/app-plus/configureAndroidManifest.js.map +1 -0
- package/dist/functions/uniapp/app-plus/configureAndroidProject.d.ts +3 -0
- package/dist/functions/uniapp/app-plus/configureAndroidProject.js +63 -0
- package/dist/functions/uniapp/app-plus/configureAndroidProject.js.map +1 -0
- package/dist/functions/uniapp/app-plus/configureBuildGradle.d.ts +9 -0
- package/dist/functions/uniapp/app-plus/configureBuildGradle.js +57 -0
- package/dist/functions/uniapp/app-plus/configureBuildGradle.js.map +1 -0
- package/dist/functions/uniapp/app-plus/configureDcloudControl.d.ts +5 -0
- package/dist/functions/uniapp/app-plus/configureDcloudControl.js +34 -0
- package/dist/functions/uniapp/app-plus/configureDcloudControl.js.map +1 -0
- package/dist/functions/uniapp/app-plus/configureStrings.d.ts +5 -0
- package/dist/functions/uniapp/app-plus/configureStrings.js +42 -0
- package/dist/functions/uniapp/app-plus/configureStrings.js.map +1 -0
- package/dist/functions/uniapp/app-plus/copyAppResources.d.ts +8 -0
- package/dist/functions/uniapp/app-plus/copyAppResources.js +25 -0
- package/dist/functions/uniapp/app-plus/copyAppResources.js.map +1 -0
- package/dist/functions/uniapp/app-plus/copyDirectory.d.ts +2 -0
- package/dist/functions/uniapp/app-plus/copyDirectory.js +18 -0
- package/dist/functions/uniapp/app-plus/copyDirectory.js.map +1 -0
- package/dist/functions/uniapp/app-plus/generateUniAppResources.d.ts +2 -0
- package/dist/functions/uniapp/app-plus/generateUniAppResources.js +35 -0
- package/dist/functions/uniapp/app-plus/generateUniAppResources.js.map +1 -0
- package/dist/functions/uniapp/app-plus/parseManifest.d.ts +14 -0
- package/dist/functions/uniapp/app-plus/parseManifest.js +44 -0
- package/dist/functions/uniapp/app-plus/parseManifest.js.map +1 -0
- package/dist/functions/uniapp/app-plus/validateOptions.d.ts +3 -0
- package/dist/functions/uniapp/app-plus/validateOptions.js +10 -0
- package/dist/functions/uniapp/app-plus/validateOptions.js.map +1 -0
- package/dist/functions/uniapp/waitForPages.d.ts +2 -0
- package/dist/functions/uniapp/waitForPages.js +19 -0
- package/dist/functions/uniapp/waitForPages.js.map +1 -0
- package/dist/functions/utils/compose.d.ts +1 -0
- package/dist/functions/utils/compose.js +10 -0
- package/dist/functions/utils/compose.js.map +1 -0
- package/dist/functions/utils/cond.d.ts +1 -0
- package/dist/functions/utils/cond.js +15 -0
- package/dist/functions/utils/cond.js.map +1 -0
- package/dist/functions/utils/curry.d.ts +1 -0
- package/dist/functions/utils/curry.js +13 -0
- package/dist/functions/utils/curry.js.map +1 -0
- package/dist/functions/utils/debounce.d.ts +1 -0
- package/dist/functions/utils/debounce.js +13 -0
- package/dist/functions/utils/debounce.js.map +1 -0
- package/dist/functions/utils/evolve.d.ts +3 -0
- package/dist/functions/utils/evolve.js +15 -0
- package/dist/functions/utils/evolve.js.map +1 -0
- package/dist/functions/utils/flow.d.ts +1 -0
- package/dist/functions/utils/flow.js +10 -0
- package/dist/functions/utils/flow.js.map +1 -0
- package/dist/functions/utils/isType.d.ts +11 -0
- package/dist/functions/utils/isType.js +30 -0
- package/dist/functions/utils/isType.js.map +1 -0
- package/dist/functions/utils/memoize.d.ts +1 -0
- package/dist/functions/utils/memoize.js +13 -0
- package/dist/functions/utils/memoize.js.map +1 -0
- package/dist/functions/utils/once.d.ts +1 -0
- package/dist/functions/utils/once.js +13 -0
- package/dist/functions/utils/once.js.map +1 -0
- package/dist/functions/utils/partial.d.ts +1 -0
- package/dist/functions/utils/partial.js +13 -0
- package/dist/functions/utils/partial.js.map +1 -0
- package/dist/functions/utils/pipe.d.ts +1 -0
- package/dist/functions/utils/pipe.js +10 -0
- package/dist/functions/utils/pipe.js.map +1 -0
- package/dist/functions/utils/retryWithBackoff.d.ts +9 -0
- package/dist/functions/utils/retryWithBackoff.js +30 -0
- package/dist/functions/utils/retryWithBackoff.js.map +1 -0
- package/dist/functions/utils/tap.d.ts +1 -0
- package/dist/functions/utils/tap.js +14 -0
- package/dist/functions/utils/tap.js.map +1 -0
- package/dist/functions/utils/throttle.d.ts +1 -0
- package/dist/functions/utils/throttle.js +11 -0
- package/dist/functions/utils/throttle.js.map +1 -0
- package/dist/functions/utils/until.d.ts +1 -0
- package/dist/functions/utils/until.js +10 -0
- package/dist/functions/utils/until.js.map +1 -0
- package/dist/functions/utils/validate.d.ts +8 -0
- package/dist/functions/utils/validate.js +45 -0
- package/dist/functions/utils/validate.js.map +1 -0
- package/dist/functions/vue/dynamicMount.d.ts +15 -0
- package/dist/functions/vue/dynamicMount.js +23 -0
- package/dist/functions/vue/dynamicMount.js.map +1 -0
- package/dist/functions/vue/isVNode.d.ts +2 -0
- package/dist/functions/vue/isVNode.js +4 -0
- package/dist/functions/vue/isVNode.js.map +1 -0
- package/dist/functions/vue/isVueComponent.d.ts +2 -0
- package/dist/functions/vue/isVueComponent.js +6 -0
- package/dist/functions/vue/isVueComponent.js.map +1 -0
- package/dist/functions/wechat/miniapp/downloadFile.d.ts +2 -0
- package/dist/functions/wechat/miniapp/downloadFile.js +39 -0
- package/dist/functions/wechat/miniapp/downloadFile.js.map +1 -0
- package/dist/hooks/useAi.d.ts +27 -0
- package/dist/hooks/useAi.js +163 -0
- package/dist/hooks/useAi.js.map +1 -0
- package/dist/hooks/useCache.d.ts +18 -0
- package/dist/hooks/useCache.js +82 -0
- package/dist/hooks/useCache.js.map +1 -0
- package/dist/hooks/useFetch.d.ts +3 -0
- package/dist/hooks/useFetch.js +154 -0
- package/dist/hooks/useFetch.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +4 -0
- package/dist/hooks/useLocalStorage.js +67 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/usePluginSystem.d.ts +11 -0
- package/dist/hooks/usePluginSystem.js +34 -0
- package/dist/hooks/usePluginSystem.js.map +1 -0
- package/dist/hooks/useRequest.d.ts +3 -0
- package/dist/hooks/useRequest.js +139 -0
- package/dist/hooks/useRequest.js.map +1 -0
- package/dist/hooks/useSessionStorage.d.ts +4 -0
- package/dist/hooks/useSessionStorage.js +67 -0
- package/dist/hooks/useSessionStorage.js.map +1 -0
- package/dist/hooks/useStorage.d.ts +3 -0
- package/dist/hooks/useStorage.js +64 -0
- package/dist/hooks/useStorage.js.map +1 -0
- package/dist/hooks/useStorageWithIndexedDB.d.ts +4 -0
- package/dist/hooks/useStorageWithIndexedDB.js +109 -0
- package/dist/hooks/useStorageWithIndexedDB.js.map +1 -0
- package/dist/hooks/useWASM.d.ts +4 -0
- package/dist/hooks/useWASM.js +267 -0
- package/dist/hooks/useWASM.js.map +1 -0
- package/dist/hooks/useWebWorker.d.ts +4 -0
- package/dist/hooks/useWebWorker.js +209 -0
- package/dist/hooks/useWebWorker.js.map +1 -0
- package/dist/hooks/useWorkerFunction.d.ts +4 -0
- package/dist/hooks/useWorkerFunction.js +191 -0
- package/dist/hooks/useWorkerFunction.js.map +1 -0
- package/dist/hooks/useWorkerPool.d.ts +4 -0
- package/dist/hooks/useWorkerPool.js +242 -0
- package/dist/hooks/useWorkerPool.js.map +1 -0
- package/package.json +145 -0
- package/references/browser.d.ts +175 -0
- package/references/browser.extension.d.ts +14 -0
- package/references/console.d.ts +164 -0
- package/references/crypto.d.ts +57 -0
- package/references/fetch.d.ts +269 -0
- package/references/json5.d.ts +28 -0
- package/references/node.d.ts +111 -0
- package/references/sharp.d.ts +19 -0
- package/references/storage.d.ts +112 -0
- package/references/timer.d.ts +46 -0
- package/references/uniapp.d.ts +9 -0
- package/references/url.d.ts +161 -0
- package/references/vue.d.ts +113 -0
- package/references/webassembly.d.ts +127 -0
- package/references/wechat.d.ts +49 -0
- package/references/worker.d.ts +207 -0
- package/references/xml.d.ts +56 -0
- package/types/altool.d.ts +65 -0
- package/types/android-build.d.ts +85 -0
- package/types/color.d.ts +115 -0
- package/types/geometry.d.ts +64 -0
- package/types/network.d.ts +184 -0
- package/types/storage.d.ts +49 -0
- package/types/util.d.ts +27 -0
- package/types/wasm.d.ts +217 -0
- package/types/worker.d.ts +364 -0
package/README.md
ADDED
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
# Shared Package 编码规范
|
|
2
|
+
|
|
3
|
+
本文档定义了 shared package 中的编码规范和最佳实践,所有开发人员必须严格遵循执行。
|
|
4
|
+
|
|
5
|
+
**重要说明**: 本库是环境无关的纯TypeScript库,所有函数必须保持环境无关性,仅通过TypeScript引用声明环境依赖。
|
|
6
|
+
|
|
7
|
+
**例外说明**: `scripts/` 目录下的文件为构建脚本,不会被打包到最终产物中,因此可以直接导入Node.js环境模块,不需要遵循环境无关性规则。playground是一个子项目,有自己的规则,你完全忽略此文件夹。
|
|
8
|
+
|
|
9
|
+
## 目录结构
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
src/
|
|
13
|
+
├── functions/ # 纯函数,按功能分类组织
|
|
14
|
+
├── hooks/ # Vue/React hooks
|
|
15
|
+
references/ # 仅供TypeScript引用的环境类型定义
|
|
16
|
+
types/ # 可导出的公共类型定义
|
|
17
|
+
scripts/ # 构建脚本(不会被打包,可直接使用Node.js模块)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## TypeScript 类型声明规范
|
|
21
|
+
|
|
22
|
+
### 1. 类型定义文件组织
|
|
23
|
+
|
|
24
|
+
- **统一类型定义**: 将重复的类型定义提取到 `types/` 目录下的专用文件中
|
|
25
|
+
- **避免重复**: 不要在多个文件中重复定义相同的接口或类型
|
|
26
|
+
- **模块化**: 按功能模块组织类型定义文件
|
|
27
|
+
- **环境分离**: 严格区分不同环境的类型定义,避免混合使用
|
|
28
|
+
- **接口导出**: 所有可复用的接口必须正确导出
|
|
29
|
+
- **命名空间统一**: 同一文件内的类型定义应使用统一的命名空间设计
|
|
30
|
+
|
|
31
|
+
### 2. 环境类型定义规范
|
|
32
|
+
|
|
33
|
+
#### 2.1 环境分离原则
|
|
34
|
+
|
|
35
|
+
**✅ 正确的环境分离**:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
// browser.d.ts - 纯浏览器环境
|
|
39
|
+
export interface BrowserEnvironment {
|
|
40
|
+
window: WindowLike
|
|
41
|
+
globalThis: any
|
|
42
|
+
console: ConsoleInterface
|
|
43
|
+
URLSearchParams: URLSearchParamsConstructor
|
|
44
|
+
localStorage: Storage
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// node.d.ts - 纯Node.js环境
|
|
48
|
+
export interface NodeEnvironment {
|
|
49
|
+
process: NodeProcess
|
|
50
|
+
fs: NodeFileSystem
|
|
51
|
+
path: NodePath
|
|
52
|
+
childProcess: NodeChildProcess
|
|
53
|
+
util: NodeUtil
|
|
54
|
+
Buffer: NodeBufferConstructor
|
|
55
|
+
console: ConsoleInterface
|
|
56
|
+
setImmediate: typeof setImmediate
|
|
57
|
+
clearImmediate: typeof clearImmediate
|
|
58
|
+
__DEV__?: boolean
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**❌ 错误的环境混合**:
|
|
63
|
+
```typescript
|
|
64
|
+
// 禁止在同一接口中混合不同环境的API
|
|
65
|
+
interface MixedEnvironment {
|
|
66
|
+
window: Window // 浏览器API
|
|
67
|
+
process: Process // Node.js API - 错误!
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### 2.2 类型安全性要求
|
|
72
|
+
|
|
73
|
+
- **减少any类型**: 优先使用具体的类型定义,避免过度使用 `any`
|
|
74
|
+
- **接口完整性**: 接口应包含必要的属性和方法,提供完整的类型信息
|
|
75
|
+
- **泛型支持**: 适当使用泛型提高类型的灵活性和复用性
|
|
76
|
+
|
|
77
|
+
**✅ 类型安全的接口设计**:
|
|
78
|
+
```typescript
|
|
79
|
+
// 具体的类型定义
|
|
80
|
+
export interface VNode<T> {
|
|
81
|
+
type: string | Component | symbol
|
|
82
|
+
children: VNodeChildren
|
|
83
|
+
props: Record<string, any> | null
|
|
84
|
+
key: string | number | symbol | null
|
|
85
|
+
ref: VNodeRef<T> | null
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// 避免过度使用any
|
|
89
|
+
export interface Component {
|
|
90
|
+
name?: string
|
|
91
|
+
setup?: (props: any, ctx: any) => any
|
|
92
|
+
render?: () => VNode
|
|
93
|
+
template?: string
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### 2.3 类型文件组织和导入规范
|
|
98
|
+
|
|
99
|
+
**📁 类型文件组织原则**:
|
|
100
|
+
- **`references/` 目录**: 存放环境相关和第三方库的类型定义(浏览器、Node.js、Sharp、Vue、微信小程序等)
|
|
101
|
+
- **`types/` 目录**: 存放通用的、需要提供给外部使用的公共类型定义
|
|
102
|
+
|
|
103
|
+
**✅ 统一的导入方式**:
|
|
104
|
+
```typescript
|
|
105
|
+
// 环境相关和第三方库类型从 references 目录导入(使用.d后缀)
|
|
106
|
+
import type { NodePath, NodeFileSystem } from '../../../references/node.d'
|
|
107
|
+
import type { BrowserEnvironment } from '../../../references/browser.d'
|
|
108
|
+
import type { Sharp } from '../../../references/sharp.d'
|
|
109
|
+
import type { WebAssembly } from '../../../references/webassembly.d'
|
|
110
|
+
|
|
111
|
+
// 通用公共类型从 types 目录导入(使用.d后缀)
|
|
112
|
+
import type { GeometryPoint, Rectangle } from '../../../types/geometry.d'
|
|
113
|
+
import type { DeepPartial, Optional } from '../../../types/util.d'
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**📝 导入路径规范**:
|
|
117
|
+
- **使用.d后缀**: 导入类型定义时使用 `.d` 后缀,不要使用 `.d.ts` 或 `.ts`
|
|
118
|
+
- **相对路径**: 使用相对路径导入,确保路径正确性
|
|
119
|
+
- **一致性**: 项目内所有导入路径保持一致的格式
|
|
120
|
+
- **显式导入**: 所有类型都通过显式导入使用,避免全局声明污染
|
|
121
|
+
|
|
122
|
+
**❌ 禁止的做法**:
|
|
123
|
+
```typescript
|
|
124
|
+
// 禁止将环境相关和第三方库类型放在 types 目录
|
|
125
|
+
// types/browser.d.ts // ❌ 错误位置
|
|
126
|
+
|
|
127
|
+
// 禁止将通用类型放在 references 目录
|
|
128
|
+
// references/geometry.d.ts // ❌ 错误位置
|
|
129
|
+
|
|
130
|
+
// 禁止使用 declare global 模式
|
|
131
|
+
declare global {
|
|
132
|
+
namespace WebAssembly {
|
|
133
|
+
// ❌ 已废弃的全局声明方式
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### 2.4 类型声明和导出规范
|
|
139
|
+
|
|
140
|
+
- **直接导出**: 使用 `export` 声明直接导出类型,避免 `declare` 声明
|
|
141
|
+
- **命名空间导出**: 对于复杂的类型结构,使用 `export namespace` 进行组织
|
|
142
|
+
- **清晰导出**: 提供清晰的类型别名导出
|
|
143
|
+
- **避免全局声明**: 不使用 `declare global` 模式,所有类型通过显式导入使用
|
|
144
|
+
|
|
145
|
+
**✅ 现代化的类型声明方式**:
|
|
146
|
+
```typescript
|
|
147
|
+
// node.d.ts - 使用 export namespace
|
|
148
|
+
export namespace Node {
|
|
149
|
+
interface FileSystem { /* ... */ }
|
|
150
|
+
interface Path { /* ... */ }
|
|
151
|
+
interface Process { /* ... */ }
|
|
152
|
+
interface Buffer { /* ... */ }
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// 直接导出类型别名
|
|
156
|
+
export type NodeFileSystem = Node.FileSystem
|
|
157
|
+
export type NodePath = Node.Path
|
|
158
|
+
export type NodeProcess = Node.Process
|
|
159
|
+
export type NodeBuffer = Node.Buffer
|
|
160
|
+
|
|
161
|
+
// webassembly.d.ts - 直接导出命名空间
|
|
162
|
+
export namespace WebAssembly {
|
|
163
|
+
interface Module { /* ... */ }
|
|
164
|
+
interface Instance { /* ... */ }
|
|
165
|
+
interface Memory { /* ... */ }
|
|
166
|
+
// ...
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// fetch.d.ts - 直接导出接口和函数
|
|
170
|
+
export interface Headers { /* ... */ }
|
|
171
|
+
export interface Request { /* ... */ }
|
|
172
|
+
export interface Response { /* ... */ }
|
|
173
|
+
export declare function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 3. 环境依赖声明规范
|
|
177
|
+
|
|
178
|
+
**✅ 正确做法 - 使用类型导入**:
|
|
179
|
+
```typescript
|
|
180
|
+
// 推荐使用 import type 导入环境类型
|
|
181
|
+
import type { NodeFileSystem, NodePath } from '../../../references/node.d'
|
|
182
|
+
import type { WindowLike } from '../../../references/browser.d'
|
|
183
|
+
import type { WebAssembly } from '../../../references/webassembly.d'
|
|
184
|
+
|
|
185
|
+
// 函数通过参数接收环境依赖,保持环境无关性
|
|
186
|
+
export async function myFunction(
|
|
187
|
+
inputPath: string,
|
|
188
|
+
fs: NodeFileSystem,
|
|
189
|
+
path: NodePath,
|
|
190
|
+
webAssembly: typeof WebAssembly,
|
|
191
|
+
window?: WindowLike
|
|
192
|
+
) {
|
|
193
|
+
// 所有环境模块都通过参数传入,函数本身环境无关
|
|
194
|
+
const module = await webAssembly.compile(wasmBytes)
|
|
195
|
+
const instance = await webAssembly.instantiate(module)
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**说明**: `references/` 目录包含环境相关和第三方库的类型定义文件,推荐使用 `import type` 导入这些类型。这些文件使用现代化的 `export` 声明方式,避免了 `declare global` 模式的全局污染。所有类型都通过显式导入使用,确保类型安全和模块化。`types/` 目录包含可导出的公共类型定义。
|
|
200
|
+
|
|
201
|
+
**❌ 错误做法 - 任何形式的直接依赖**:
|
|
202
|
+
```typescript
|
|
203
|
+
// ❌ 禁止任何形式的直接导入或声明
|
|
204
|
+
import fs from 'fs'
|
|
205
|
+
declare const fs: NodeFileSystem
|
|
206
|
+
const window = globalThis.window
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### 4. 接口功能完整性规范
|
|
210
|
+
|
|
211
|
+
#### 4.1 避免功能单一的接口
|
|
212
|
+
|
|
213
|
+
**✅ 功能完整的接口设计**:
|
|
214
|
+
```typescript
|
|
215
|
+
// 完整的Base64编码接口
|
|
216
|
+
export interface Base64Encoder {
|
|
217
|
+
btoa(data: string): string
|
|
218
|
+
atob(data: string): string // 新增解码功能
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// 完整的定时器API
|
|
222
|
+
export interface TimerAPI {
|
|
223
|
+
setTimeout(callback: () => void, delay: number): number
|
|
224
|
+
clearTimeout(id: number): void
|
|
225
|
+
setInterval(callback: () => void, delay: number): number
|
|
226
|
+
clearInterval(id: number): void
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**❌ 功能不完整的接口**:
|
|
231
|
+
```typescript
|
|
232
|
+
// 功能过于单一
|
|
233
|
+
interface IncompleteEncoder {
|
|
234
|
+
btoa(data: string): string // 只有编码,缺少解码
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### 4.2 接口导出规范
|
|
239
|
+
|
|
240
|
+
- **必须导出**: 所有定义的接口都必须正确导出,确保可以在其他地方使用
|
|
241
|
+
- **导出一致性**: 保持导出方式的一致性
|
|
242
|
+
|
|
243
|
+
**✅ 正确的接口导出**:
|
|
244
|
+
```typescript
|
|
245
|
+
// sharp.d.ts
|
|
246
|
+
export interface SharpInstance {
|
|
247
|
+
resize(width: number, height: number): SharpInstance
|
|
248
|
+
toBuffer(): Promise<Buffer>
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface Sharp {
|
|
252
|
+
(input: Buffer): SharpInstance
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### 5. Sharp 图像处理库规范
|
|
257
|
+
|
|
258
|
+
- 使用统一的 `references/sharp.d.ts` 类型定义
|
|
259
|
+
- Sharp 实例作为函数参数传入,不使用全局声明
|
|
260
|
+
- 所有图像处理函数都应该接收 `sharp: Sharp` 参数
|
|
261
|
+
- 确保 Sharp 相关接口正确导出
|
|
262
|
+
|
|
263
|
+
## Functions 目录规范
|
|
264
|
+
|
|
265
|
+
本目录包含项目中使用的纯函数,所有函数必须遵循以下规范:
|
|
266
|
+
|
|
267
|
+
### 基本要求
|
|
268
|
+
|
|
269
|
+
#### 1. 纯函数原则
|
|
270
|
+
- 所有函数必须是**纯函数**
|
|
271
|
+
- 相同的输入必须产生相同的输出
|
|
272
|
+
- 不能有副作用(不修改外部状态、不进行 I/O 操作等)
|
|
273
|
+
- 不依赖外部可变状态
|
|
274
|
+
|
|
275
|
+
#### 2. 文件组织
|
|
276
|
+
- 按照**模块进行划分文件夹**
|
|
277
|
+
- 每个文件中**只能包含一个函数**
|
|
278
|
+
- 文件名应该与函数名保持一致
|
|
279
|
+
- 使用 `export` 导出函数(推荐使用具名导出)
|
|
280
|
+
- **❌ 严禁创建 index.ts 入口文件**:每个函数文件都需要单独打包,不允许使用统一入口文件
|
|
281
|
+
- **❌ 子模块不要创建 README 文件**:避免文档冗余,统一在根目录的 README 中说明规范
|
|
282
|
+
|
|
283
|
+
#### 3. 目录结构
|
|
284
|
+
- 按功能模块划分子目录
|
|
285
|
+
- 每个子目录包含相关的函数文件
|
|
286
|
+
- 可以包含模块专用的类型定义和说明文档
|
|
287
|
+
|
|
288
|
+
### Functions 代码规范
|
|
289
|
+
|
|
290
|
+
#### 1. 导出方式
|
|
291
|
+
推荐使用具名导出:
|
|
292
|
+
```typescript
|
|
293
|
+
export function functionName(params: Type): ReturnType {
|
|
294
|
+
// 函数实现
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
也可以使用默认导出:
|
|
299
|
+
```typescript
|
|
300
|
+
const functionName = (params: Type): ReturnType => {
|
|
301
|
+
// 函数实现
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export default functionName
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
#### 2. 类型定义
|
|
308
|
+
- **函数专用类型**:如果类型只被当前函数使用,应该在同一个文件中定义
|
|
309
|
+
- **通用类型**:只有被多个函数或模块共享的类型,才应该放在 `types/` 目录中
|
|
310
|
+
- 优先原则:保持函数的独立性,避免不必要的外部依赖
|
|
311
|
+
|
|
312
|
+
#### 3. 文档注释
|
|
313
|
+
每个函数都应该包含 JSDoc 注释:
|
|
314
|
+
```typescript
|
|
315
|
+
/**
|
|
316
|
+
* 函数描述
|
|
317
|
+
* @param param1 参数1描述
|
|
318
|
+
* @param param2 参数2描述
|
|
319
|
+
* @returns 返回值描述
|
|
320
|
+
*/
|
|
321
|
+
export function functionName(param1: Type1, param2: Type2): ReturnType {
|
|
322
|
+
// 实现
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Functions 注意事项
|
|
327
|
+
|
|
328
|
+
1. **避免副作用**:不要在函数中进行文件操作、网络请求、修改全局变量等
|
|
329
|
+
2. **保持简单**:每个函数应该职责单一,易于测试和维护
|
|
330
|
+
3. **类型安全**:充分利用 TypeScript 的类型系统,确保类型安全
|
|
331
|
+
4. **可测试性**:纯函数天然易于测试,编写函数时考虑测试场景
|
|
332
|
+
5. **单独打包**:每个函数文件都会被单独打包到 package.json 的 exports 字段中,因此不能使用 index.ts 等入口文件进行统一导出
|
|
333
|
+
6. **明确导入**:使用者需要明确导入具体的函数模块,如 `import { functionName } from 'shared/functions/module/functionName'`
|
|
334
|
+
|
|
335
|
+
### Functions 示例
|
|
336
|
+
|
|
337
|
+
#### 正确示例
|
|
338
|
+
```typescript
|
|
339
|
+
// functions/module/functionName.ts
|
|
340
|
+
/**
|
|
341
|
+
* 函数功能描述
|
|
342
|
+
* @param param 参数描述
|
|
343
|
+
* @returns 返回值描述
|
|
344
|
+
*/
|
|
345
|
+
export function functionName(param: InputType): OutputType {
|
|
346
|
+
// 纯函数实现,无副作用
|
|
347
|
+
return processedResult
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### 错误示例
|
|
352
|
+
```typescript
|
|
353
|
+
// ❌ 包含副作用
|
|
354
|
+
export function functionWithSideEffect(data: string): void {
|
|
355
|
+
// 副作用:文件操作、网络请求等
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// ❌ 依赖外部状态
|
|
359
|
+
let globalState = 0
|
|
360
|
+
export function dependsOnGlobalState(): number {
|
|
361
|
+
return ++globalState // 依赖外部可变状态
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// ❌ 一个文件包含多个函数
|
|
365
|
+
export function firstFunction(): void {}
|
|
366
|
+
export function secondFunction(): void {}
|
|
367
|
+
|
|
368
|
+
// ❌ 创建 index.ts 入口文件
|
|
369
|
+
// functions/module/index.ts
|
|
370
|
+
export { functionA } from './functionA'
|
|
371
|
+
export { functionB } from './functionB'
|
|
372
|
+
// 这种做法会影响单独打包,严禁使用
|
|
373
|
+
|
|
374
|
+
// ❌ 在子模块中创建 README 文件
|
|
375
|
+
// functions/module/README.md
|
|
376
|
+
// 子模块不需要单独的 README 文件,会造成文档冗余
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## 函数设计原则
|
|
380
|
+
|
|
381
|
+
### 1. 依赖注入与环境无关性
|
|
382
|
+
|
|
383
|
+
- 所有环境依赖都必须通过参数传入,确保函数保持环境无关性
|
|
384
|
+
- 函数不能直接导入任何环境模块(如 fs、path、sharp 等)
|
|
385
|
+
- 仅通过 TypeScript 引用声明环境类型,实例通过参数传入
|
|
386
|
+
- 函数实现完全依赖传入的参数,保持环境无关
|
|
387
|
+
|
|
388
|
+
### 2. 类型安全
|
|
389
|
+
|
|
390
|
+
- 所有函数参数都应该有明确的类型声明
|
|
391
|
+
- 使用 TypeScript 的严格模式
|
|
392
|
+
- 避免使用 `any` 类型,优先使用具体的类型定义
|
|
393
|
+
|
|
394
|
+
### 3. 纯函数与环境无关性
|
|
395
|
+
|
|
396
|
+
- `functions/` 目录下的函数必须是环境无关的纯函数
|
|
397
|
+
- 函数不能直接访问任何环境变量或全局对象
|
|
398
|
+
- 所有环境依赖通过参数传入,确保函数可在任意环境中运行
|
|
399
|
+
- 按功能模块组织函数(如 dom/、image/、debug/ 等)
|
|
400
|
+
- 环境无关的纯函数更容易测试、维护和跨环境复用
|
|
401
|
+
|
|
402
|
+
### 4. 错误处理规范
|
|
403
|
+
|
|
404
|
+
#### 4.1 错误信息格式
|
|
405
|
+
|
|
406
|
+
- **中文错误信息**: 面向用户的错误信息使用中文,提供清晰的错误描述
|
|
407
|
+
- **状态码包含**: 网络请求相关错误应包含具体的状态码信息
|
|
408
|
+
- **上下文信息**: 错误信息应包含足够的上下文,帮助定位问题
|
|
409
|
+
|
|
410
|
+
**✅ 正确的错误处理**:
|
|
411
|
+
```typescript
|
|
412
|
+
// 网络请求错误
|
|
413
|
+
reject(new Error(`下载失败,状态码: ${res.statusCode}`));
|
|
414
|
+
|
|
415
|
+
// 参数验证错误
|
|
416
|
+
throw new Error('文件路径不能为空');
|
|
417
|
+
|
|
418
|
+
// 业务逻辑错误
|
|
419
|
+
reject(new Error(`应用验证失败: ${validationMessage}`));
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**❌ 错误的错误处理**:
|
|
423
|
+
```typescript
|
|
424
|
+
// 错误信息过于简单
|
|
425
|
+
reject(new Error('failed'));
|
|
426
|
+
|
|
427
|
+
// 缺少上下文信息
|
|
428
|
+
throw new Error('error');
|
|
429
|
+
|
|
430
|
+
// 使用英文错误信息(面向用户时)
|
|
431
|
+
reject(new Error('Download failed'));
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
#### 4.2 错误处理一致性
|
|
435
|
+
|
|
436
|
+
- **Promise 错误**: 异步函数使用 `reject(new Error(...))` 抛出错误
|
|
437
|
+
- **同步错误**: 同步函数使用 `throw new Error(...)` 抛出错误
|
|
438
|
+
- **错误类型**: 统一使用 `Error` 类型,避免抛出字符串或其他类型
|
|
439
|
+
- **错误传递**: 适当时保留原始错误信息,避免错误信息丢失
|
|
440
|
+
|
|
441
|
+
### 5. JSDoc 文档规范
|
|
442
|
+
|
|
443
|
+
- **强制要求**: 每个导出的函数都必须包含完整的 JSDoc 注释
|
|
444
|
+
- **禁止生成**: 不要为函数模块生成单独的 README.md 文件
|
|
445
|
+
- **文档内容**: JSDoc 必须包含函数描述、参数说明、返回值说明和使用示例
|
|
446
|
+
- **类型信息**: 充分利用 TypeScript 类型系统,JSDoc 中重点描述业务逻辑
|
|
447
|
+
|
|
448
|
+
#### 5.1 JSDoc 格式要求
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
// 正确的类型导入方式
|
|
452
|
+
import type { EnvironmentType1, EnvironmentType2 } from '../../../references/environment.d'
|
|
453
|
+
import type { CommonType } from '../../../types/common.d'
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* 函数的简要描述
|
|
457
|
+
*
|
|
458
|
+
* 详细描述函数的功能、用途和注意事项
|
|
459
|
+
*
|
|
460
|
+
* @param paramName - 参数描述,说明参数的用途和要求
|
|
461
|
+
* @param envDependency - 环境依赖参数,通过参数注入
|
|
462
|
+
* @returns 返回值描述,说明返回内容的含义
|
|
463
|
+
*/
|
|
464
|
+
export async function myFunction(
|
|
465
|
+
paramName: string,
|
|
466
|
+
envDependency: EnvironmentType1
|
|
467
|
+
): Promise<CommonType> {
|
|
468
|
+
// 函数实现
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
## 文件引用规范
|
|
473
|
+
|
|
474
|
+
### 6. 导入限制
|
|
475
|
+
|
|
476
|
+
**✅ 允许的导入**:
|
|
477
|
+
- 本包内的类型和函数(使用相对路径)
|
|
478
|
+
- 环境相关和第三方库类型(从 `references/` 目录导入)
|
|
479
|
+
- 通用公共类型(从 `types/` 目录导入)
|
|
480
|
+
|
|
481
|
+
```typescript
|
|
482
|
+
// 允许导入本包内的类型和函数
|
|
483
|
+
import type { SoftwareConfig, Platform } from './types'
|
|
484
|
+
import { helperFunction } from '../utils/helper'
|
|
485
|
+
|
|
486
|
+
// 环境相关和第三方库类型从 references 目录导入
|
|
487
|
+
import type { NodeFileSystem, NodePath } from '../../../references/node.d'
|
|
488
|
+
import type { Sharp } from '../../../references/sharp.d'
|
|
489
|
+
import type { WebAssembly } from '../../../references/webassembly.d'
|
|
490
|
+
|
|
491
|
+
// 通用公共类型从 types 目录导入
|
|
492
|
+
import type { GeometryPoint, Rectangle } from '../../../types/geometry.d'
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
**❌ 禁止的导入和声明**:
|
|
496
|
+
- 任何环境模块的直接导入或声明
|
|
497
|
+
- 第三方npm包的导入
|
|
498
|
+
- 全局变量的直接访问
|
|
499
|
+
|
|
500
|
+
```typescript
|
|
501
|
+
// ❌ 禁止任何形式的环境依赖
|
|
502
|
+
import fs from 'fs' // 禁止导入
|
|
503
|
+
import path from 'path' // 禁止导入
|
|
504
|
+
import sharp from 'sharp' // 禁止导入
|
|
505
|
+
import lodash from 'lodash' // 禁止导入
|
|
506
|
+
declare const fs: NodeFileSystem // 禁止声明
|
|
507
|
+
const win = globalThis.window // 禁止全局访问
|
|
508
|
+
process.env.NODE_ENV // 禁止直接使用
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
**✅ 唯一允许的环境依赖方式**:
|
|
512
|
+
```typescript
|
|
513
|
+
import type { NodeBuffer, NodeFileSystem } from '../../../references/node.d'
|
|
514
|
+
import type { Sharp } from '../../../references/sharp.d'
|
|
515
|
+
import type { WebAssembly } from '../../../references/webassembly.d'
|
|
516
|
+
|
|
517
|
+
// 仅通过TypeScript引用声明类型,所有实例通过参数传入
|
|
518
|
+
export function processFile(
|
|
519
|
+
content: string,
|
|
520
|
+
fs: NodeFileSystem,
|
|
521
|
+
sharp: Sharp,
|
|
522
|
+
webAssembly: typeof WebAssembly
|
|
523
|
+
): Promise<NodeBuffer> {
|
|
524
|
+
// 函数实现保持环境无关
|
|
525
|
+
}
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### 6.1 相对路径
|
|
529
|
+
|
|
530
|
+
- 使用相对路径引用类型定义文件
|
|
531
|
+
- 保持路径的一致性和可维护性
|
|
532
|
+
|
|
533
|
+
## 代码质量检查清单
|
|
534
|
+
|
|
535
|
+
在提交代码前,请确保通过以下检查清单:
|
|
536
|
+
|
|
537
|
+
### TypeScript 类型检查
|
|
538
|
+
- [ ] 所有接口都已正确导出
|
|
539
|
+
- [ ] 环境类型定义严格分离(浏览器 vs Node.js)
|
|
540
|
+
- [ ] 减少 `any` 类型的使用,提供具体类型定义
|
|
541
|
+
- [ ] 导入方式保持一致(优先使用 `import type`)
|
|
542
|
+
- [ ] 命名空间设计统一
|
|
543
|
+
- [ ] 接口功能完整,避免过于单一的设计
|
|
544
|
+
|
|
545
|
+
### 环境无关性检查
|
|
546
|
+
- [ ] 函数不直接导入任何环境模块
|
|
547
|
+
- [ ] 所有环境依赖通过参数传入
|
|
548
|
+
- [ ] 仅使用 TypeScript 引用声明环境类型
|
|
549
|
+
- [ ] 函数可在任意环境中运行
|
|
550
|
+
|
|
551
|
+
### 错误处理检查
|
|
552
|
+
- [ ] 错误信息使用中文,提供清晰的错误描述
|
|
553
|
+
- [ ] 网络请求错误包含具体的状态码信息
|
|
554
|
+
- [ ] 错误信息包含足够的上下文信息
|
|
555
|
+
- [ ] 异步函数使用 `reject(new Error(...))` 抛出错误
|
|
556
|
+
- [ ] 同步函数使用 `throw new Error(...)` 抛出错误
|
|
557
|
+
- [ ] 统一使用 `Error` 类型,避免抛出其他类型
|
|
558
|
+
|
|
559
|
+
### JSDoc 文档检查
|
|
560
|
+
- [ ] 每个导出函数都有完整的 JSDoc 注释
|
|
561
|
+
- [ ] JSDoc 包含函数描述、参数说明、返回值说明
|
|
562
|
+
- [ ] 没有生成单独的 README.md 文件
|
|
563
|
+
- [ ] JSDoc 格式符合规范要求
|
|
564
|
+
|
|
565
|
+
### 代码组织检查
|
|
566
|
+
- [ ] 按功能模块组织代码结构
|
|
567
|
+
- [ ] 类型定义提取到合适的位置
|
|
568
|
+
- [ ] 文件路径和引用路径正确
|
|
569
|
+
- [ ] 避免重复的类型定义
|
|
570
|
+
- [ ] 函数遵循单一职责原则
|
|
571
|
+
- [ ] 每个文件只包含一个函数(functions目录下)
|
|
572
|
+
|
|
573
|
+
## 最佳实践总结
|
|
574
|
+
|
|
575
|
+
1. **环境无关性**: 本库是纯TypeScript库,所有函数必须保持环境无关,可在任意环境中运行
|
|
576
|
+
2. **严格导入控制**: 只允许导入本包内容和TypeScript引用,禁止任何环境模块的直接导入或声明
|
|
577
|
+
3. **依赖注入**: 所有环境依赖通过参数传入,确保函数的环境无关性和可测试性
|
|
578
|
+
4. **现代化类型声明**: 使用 `export` 声明直接导出类型,避免 `declare global` 模式的全局污染
|
|
579
|
+
5. **类型引用规范**: 环境类型统一通过 `import type` 导入,使用 `.d` 后缀
|
|
580
|
+
6. **环境分离**: 严格区分浏览器和Node.js环境的类型定义,避免混合使用
|
|
581
|
+
7. **统一类型定义**: 重复的类型定义提取到公共文件中,保持命名空间设计的一致性
|
|
582
|
+
8. **类型安全**: 使用具体的类型定义,减少 `any` 的使用,提供完整的接口功能
|
|
583
|
+
9. **接口导出**: 确保所有可复用的接口正确导出,保持导出方式的一致性
|
|
584
|
+
10. **显式导入**: 所有类型都通过显式导入使用,确保类型安全和模块化
|
|
585
|
+
11. **模块化**: 按功能组织代码和类型定义,保持清晰的项目结构
|
|
586
|
+
12. **错误处理**: 使用中文错误信息,包含足够的上下文和状态码,统一使用 Error 类型
|
|
587
|
+
13. **JSDoc 文档**: 每个导出函数必须有完整的 JSDoc 注释,包含描述、参数、返回值和使用示例
|
|
588
|
+
14. **代码质量**: 遵循 TypeScript 严格模式,使用 ESLint 和 Prettier 保持代码风格一致
|
|
589
|
+
15. **文档化**: 重要的设计决策和规范要有文档记录,提供代码质量检查清单
|
|
590
|
+
|
|
591
|
+
## 代码组织和文档要求
|
|
592
|
+
|
|
593
|
+
### 7. 函数组织原则
|
|
594
|
+
|
|
595
|
+
- 按功能模块组织函数到不同的目录(如 dom/、image/、debug/ 等)
|
|
596
|
+
- 每个函数文件专注于单一功能领域
|
|
597
|
+
- 保持函数的单一职责原则
|
|
598
|
+
- 优先考虑函数的复用性和可测试性
|
|
599
|
+
|
|
600
|
+
### 7.1 文档要求
|
|
601
|
+
|
|
602
|
+
- **JSDoc 优先**: 每个函数必须有完整的 JSDoc 注释,不生成单独的 README 文件
|
|
603
|
+
- **类型安全**: 充分利用 TypeScript 类型系统提供类型信息
|
|
604
|
+
- **文档完整性**: JSDoc 必须包含函数描述、参数说明和返回值说明
|
|
605
|
+
|
|
606
|
+
### 7.2 代码质量要求
|
|
607
|
+
|
|
608
|
+
- 遵循 TypeScript 严格模式
|
|
609
|
+
- 函数复杂度控制在合理范围内
|
|
610
|
+
- 保持函数职责单一,易于测试和维护
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="1024.000000" height="1024.000000" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<desc>
|
|
3
|
+
Created with Pixso.
|
|
4
|
+
</desc>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip2_7">
|
|
7
|
+
<rect id="logo-transparent.svg" width="1024.000000" height="1024.000000" fill="white" fill-opacity="0"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
<linearGradient x1="211.999863" y1="57.000076" x2="666.000061" y2="722.499939" id="paint_linear_2_12_0" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop offset="0.003135" stop-color="#F41F1F"/>
|
|
11
|
+
<stop offset="0.488260" stop-color="#FF5340"/>
|
|
12
|
+
<stop offset="1.000000" stop-color="#FF68CF"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
</defs>
|
|
15
|
+
<g clip-path="url(#clip2_7)">
|
|
16
|
+
<path id="矢量 1" d="M701.17 222.36L406.96 142L287 462.9L737 492.76L530.71 881L287 643.71" stroke="url(#paint_linear_2_12_0)" stroke-opacity="1.000000" stroke-width="120.000000"/>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="226.605591" height="69.890625" viewBox="0 0 226.606 69.8906" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<desc>
|
|
3
|
+
Created with Pixso.
|
|
4
|
+
</desc>
|
|
5
|
+
<defs/>
|
|
6
|
+
<path id="矢量 2" d="M26.69 69.89Q18.53 69.89 12.46 66.44Q10.07 65.07 8.12 63.23L8.12 63.23Q5.15 60.41 3.21 56.5Q0 50.01 0 40.99Q0 31.63 3.39 23.74Q4.21 21.85 5.22 20.03Q8.54 14.09 13.32 9.77L13.32 9.77Q16.08 7.29 19.33 5.34Q22.9 3.19 26.75 1.91Q32.49 0 38.88 0Q43.59 0 48.32 1.07Q53.08 2.13 56.34 3.93L52.89 15.65Q44.34 11.81 37.24 11.81Q30.65 11.81 25.75 14.68L25.75 14.68Q25.02 15.11 24.32 15.6Q22.8 16.69 21.49 17.99L21.49 17.99Q18.22 21.23 16.26 25.8Q13.54 32.17 13.54 39.84Q13.54 50.37 18.75 54.83Q22.56 58.1 29.17 58.1Q36.28 58.1 46.07 54.25L45.39 65.95Q41.57 67.78 36.42 68.83Q31.28 69.89 26.69 69.89ZM55.26 65.9L55.26 65.9L55.26 65.9Q54.3 65.47 53.36 64.99L57.2 50.97Q60.67 54.07 65.5 56.08Q70.35 58.1 76.21 58.1Q84.85 58.1 87.47 54.13L87.47 54.13Q88.61 52.4 88.61 49.92Q88.61 47.16 87.34 45.24Q86.71 44.29 85.77 43.54Q82.94 41.29 75.84 38.78Q70.35 36.86 67 34.71Q64.53 33.12 62.92 30.91L62.92 30.91L62.91 30.9Q62.34 30.11 61.87 29.25Q60.09 25.92 60.09 20.92Q60.09 16.94 61.48 13.52L61.48 13.52Q62.2 11.76 63.3 10.14Q63.76 9.46 64.28 8.82L64.28 8.82L64.28 8.82L64.28 8.82Q67.36 5 72.32 2.69Q78.13 0 85.82 0Q92.34 0 97.92 1.54Q103.49 3.09 106.94 5.2L103.49 17.76Q98.2 14.6 93.98 13.17Q89.76 11.71 84.86 11.71Q79.49 11.71 76.17 13.64Q74.69 14.49 73.87 15.77L73.87 15.77Q72.86 17.36 72.86 19.59Q72.86 21.42 73.66 22.79L73.66 22.79Q74.32 23.92 75.53 24.72Q78.23 26.5 84.09 28.52Q90.04 30.53 93.79 32.46Q94.81 32.98 95.75 33.63L95.75 33.63L95.75 33.63L95.75 33.63Q98.24 35.36 100.12 37.99Q102.72 41.57 102.72 47.34Q102.72 49.99 102.14 52.52L102.14 52.52Q101.46 55.47 99.98 58.24Q97.24 63.37 90.95 66.63Q84.67 69.89 74.78 69.89Q64.13 69.89 55.26 65.9ZM113.75 55.02L134.21 55.02L133.35 61.18L112.93 61.18L112.13 66.31L139.23 66.31Q139.81 66.31 140.35 66.15L140.35 66.15Q141.21 65.9 141.96 65.25Q142.62 64.67 142.99 63.95L142.99 63.95Q143.29 63.35 143.38 62.64L147.22 35.59L116.45 35.59L113.75 55.02ZM173.9 55.02L153.44 55.02L156.14 35.59L186.91 35.59L183.07 62.64Q182.98 63.35 182.68 63.95Q182.31 64.67 181.65 65.25Q180.9 65.9 180.04 66.15Q179.5 66.31 178.92 66.31L151.82 66.31L152.62 61.18L173.04 61.18L173.9 55.02ZM193.13 55.02L213.59 55.02L212.73 61.18L192.31 61.18L191.51 66.31L218.61 66.31Q219.19 66.31 219.73 66.15Q220.59 65.9 221.34 65.25Q222 64.67 222.37 63.95Q222.67 63.35 222.76 62.64L226.6 35.59L195.83 35.59L193.13 55.02ZM124.65 49.89L126.01 40.66L136.27 40.66L134.96 49.89L124.65 49.89ZM165.7 40.66L164.34 49.89L174.65 49.89L175.96 40.66L165.7 40.66ZM204.03 49.89L205.39 40.66L215.65 40.66L214.34 49.89L204.03 49.89Z" fill="#000000" fill-opacity="1.000000" fill-rule="evenodd"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg width="1024.000000" height="1024.000000" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<desc>
|
|
3
|
+
Created with Pixso.
|
|
4
|
+
</desc>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip2_7">
|
|
7
|
+
<rect id="logo-transparent.svg" width="1024.000000" height="1024.000000" fill="white" fill-opacity="0"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#clip2_7)">
|
|
11
|
+
<path id="矢量 1" d="" fill="#000000" fill-opacity="1.000000" fill-rule="nonzero"/>
|
|
12
|
+
<path id="矢量 1" d="M701.17 222.36L406.96 142L287 462.9L737 492.76L530.71 881L287 643.71" stroke="#FFFFFF" stroke-opacity="1.000000" stroke-width="120.000000"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="1024.000000" height="1024.000000" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<desc>
|
|
3
|
+
Created with Pixso.
|
|
4
|
+
</desc>
|
|
5
|
+
<defs/>
|
|
6
|
+
<rect id="矩形 1" width="1024.000000" height="1024.000000" fill="#1D90ED" fill-opacity="1.000000"/>
|
|
7
|
+
<path id="矢量 1" d="M686.5 246L415.5 172L305 467.5L719.5 495L529.5 852.5L305 634" stroke="#FFFFFF" stroke-opacity="1.000000" stroke-width="120.000000"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default (crypto, base64Encoder) => {
|
|
2
|
+
let expiredDate = new Date();
|
|
3
|
+
expiredDate.setFullYear(expiredDate.getFullYear() + 99);
|
|
4
|
+
const milliSeconds = expiredDate.getTime();
|
|
5
|
+
const expired = base64Encoder.btoa(milliSeconds.toString());
|
|
6
|
+
const license = `[v3][RELEASE][0102]_${expired}`;
|
|
7
|
+
const hashResult = crypto.MD5(license);
|
|
8
|
+
const hash = typeof hashResult === 'string' ? hashResult : hashResult.toString();
|
|
9
|
+
const licenseKey = `${license}${hash}`;
|
|
10
|
+
return licenseKey;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=generateLicense.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateLicense.js","sourceRoot":"","sources":["../../../src/functions/ag-grid/generateLicense.ts"],"names":[],"mappings":"AASA,eAAe,CAAC,MAAgB,EAAE,aAA4B,EAAE,EAAE;IAChE,IAAI,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;IAC5B,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,uBAAuB,OAAO,EAAE,CAAA;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;IAChF,MAAM,UAAU,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,CAAA;IACtC,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|