mirror of https://github.com/curbengh/hexo-yam
				
				
				
			feat: add @bokuweb/zstd-wasm as option
This commit is contained in:
		
							parent
							
								
									607a226ce0
								
							
						
					
					
						commit
						bda758177a
					
				|  | @ -24,20 +24,8 @@ jobs: | |||
|           restore-keys: ${{ runner.os }}-npm-cache | ||||
|       - name: Install Dependencies | ||||
|         run: npm install | ||||
|       - name: Determine zstd binary version | ||||
|         shell: bash | ||||
|         run: | | ||||
|           case "$RUNNER_OS" in | ||||
|             "Linux") | ||||
|                 echo "PLATFORM=linux-x64-gnu" >> "$GITHUB_ENV" ;; | ||||
|             "Windows") | ||||
|                 echo "PLATFORM=win32-x64-msvc" >> "$GITHUB_ENV" ;; | ||||
|             "macOS") | ||||
|                 echo "PLATFORM=darwin-arm64" >> "$GITHUB_ENV" ;; | ||||
|           esac | ||||
|       - name: Install zstd binary | ||||
|         shell: bash | ||||
|         run: npm install "@mongodb-js/zstd-$PLATFORM" | ||||
|         run: npm install "@mongodb-js/zstd" | ||||
|       - name: Test | ||||
|         run: npm run test | ||||
|         env: | ||||
|  |  | |||
							
								
								
									
										33
									
								
								lib/zstd.js
								
								
								
								
							
							
						
						
									
										33
									
								
								lib/zstd.js
								
								
								
								
							|  | @ -1,8 +1,31 @@ | |||
| 'use strict' | ||||
| const { compress: zstd } = require('@mongodb-js/zstd') | ||||
| 
 | ||||
| /** | ||||
|  * @returns {{ compress: (data: Buffer, level?: number) => Promise<Buffer>, init: () => Promise<void> }} | ||||
|  */ | ||||
| function importZstd() { | ||||
|   try { | ||||
|     const { compress } = require('@mongodb-js/zstd') | ||||
|     return { compress }; | ||||
|   } | ||||
|   catch (ex) { | ||||
|     try { | ||||
|       const { init, compress } = require('@bokuweb/zstd-wasm') | ||||
|       return { | ||||
|         compress: async (buf, level) => Buffer.from(compress(buf, level)), | ||||
|         init | ||||
|       } | ||||
|     } | ||||
|     catch { | ||||
|       throw ex; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| const { compress: zstd, init = undefined } = importZstd() | ||||
| const { match, logFn } = require('./tools') | ||||
| 
 | ||||
| function zstdFn() { | ||||
| async function zstdFn() { | ||||
|   const hexo = this | ||||
|   const options = hexo.config.minify.zstd | ||||
| 
 | ||||
|  | @ -13,7 +36,11 @@ function zstdFn() { | |||
|   let level = options.level | ||||
|   if (typeof level !== 'number') level = undefined | ||||
| 
 | ||||
|   return Promise.all((match(routeList, include, globOptions)).map(path => { | ||||
|   if (typeof init === 'function') { | ||||
|     await init(); | ||||
|   } | ||||
| 
 | ||||
|   await Promise.all((match(routeList, include, globOptions)).map(path => { | ||||
|     return new Promise((/** @type {(value: void) => void} */ resolve, reject) => { | ||||
|       const assetPath = route.get(path) | ||||
|       let assetTxt = '' | ||||
|  |  | |||
							
								
								
									
										13
									
								
								package.json
								
								
								
								
							
							
						
						
									
										13
									
								
								package.json
								
								
								
								
							|  | @ -38,8 +38,17 @@ | |||
|     "jest": "^29.1.2", | ||||
|     "standard": "^17.0.0" | ||||
|   }, | ||||
|   "optionalDependencies": { | ||||
|     "@mongodb-js/zstd": "^2.0.0" | ||||
|   "peerDependencies": { | ||||
|     "@mongodb-js/zstd": "^2.0.0", | ||||
|     "@bokuweb/zstd-wasm": "^0.0.22" | ||||
|   }, | ||||
|   "peerDependenciesMeta": { | ||||
|     "@mongodb-js/zstd": { | ||||
|       "optional": true | ||||
|     }, | ||||
|     "@bokuweb/zstd-wasm": { | ||||
|       "optional": true | ||||
|     } | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "minify", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue