@soga/utils 0.0.2 → 0.0.4

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.
@@ -1,7 +1,6 @@
1
1
  import { AnalyseResult } from 'chardet';
2
- export declare const isUtf8Text: (text: string) => Promise<boolean>;
3
- export declare const isUtf8File: (filepath: string) => Promise<boolean>;
4
2
  export declare const getFileAllCharcode: (filepath: string) => Promise<AnalyseResult>;
5
3
  export declare const getFileCharcodeName: (filepath: string) => Promise<string>;
6
4
  export declare const getBufferCharcodeName: (buffer: Buffer<ArrayBufferLike>) => string;
5
+ export declare const isUtf8File: (filepath: string) => Promise<boolean>;
7
6
  export declare const saveFileAsUtf8: (inputFilePath: string, outputFilePath: string) => Promise<void>;
package/dist/charcode.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.saveFileAsUtf8=exports.getBufferCharcodeName=exports.getFileCharcodeName=exports.getFileAllCharcode=exports.isUtf8File=exports.isUtf8Text=void 0;const chardet_1=__importDefault(require("chardet")),fs_1=require("fs"),iconv_lite_1=__importDefault(require("iconv-lite")),buffer_1=require("./buffer"),file_1=require("./file"),getSampleBuffer=async e=>{const t=await(0,file_1.getFileSize)(e);let r=t-1;t>20480&&(r=20480);return await(0,buffer_1.getFileBufferSlice)(e,0,r)},parseCharcodeInfo=e=>{const t=e.find((e=>"UTF-8"===e.name)),r=e.find((e=>e.name.startsWith("GB")));return t?r?t.confidence>=r.confidence?t:r:t:r||e[0]},isUtf8Text=async e=>"UTF-8"===chardet_1.default.detect(Buffer.from(e)).toUpperCase();exports.isUtf8Text=isUtf8Text;const isUtf8File=async e=>"UTF-8"===(await chardet_1.default.detectFile(e)).toUpperCase();exports.isUtf8File=isUtf8File;const getFileAllCharcode=async e=>{const t=await getSampleBuffer(e);return chardet_1.default.analyse(t)};exports.getFileAllCharcode=getFileAllCharcode;const getFileCharcodeName=async e=>{const t=await(0,exports.getFileAllCharcode)(e);return parseCharcodeInfo(t).name};exports.getFileCharcodeName=getFileCharcodeName;const getBufferCharcodeName=e=>{const t=chardet_1.default.analyse(e);return parseCharcodeInfo(t).name};exports.getBufferCharcodeName=getBufferCharcodeName;const saveFileAsUtf8=async(e,t)=>{await new Promise(((r,a)=>{const o=(0,fs_1.createReadStream)(e),i=(0,fs_1.createWriteStream)(t);o.on("error",(e=>{console.error(`读取文件时发生错误: ${e.message}`),a(e)})),i.on("error",(e=>{console.error(`写入文件时发生错误: ${e.message}`),a(e)})),(async()=>{try{const t=await(0,file_1.getFileSize)(e),s=Math.min(1023,t),f=await(0,buffer_1.getFileBufferSlice)(e,0,s),c=(0,exports.getBufferCharcodeName)(f);if("UTF-8"===c)o.pipe(i);else{const e=iconv_lite_1.default.decodeStream(c),t=iconv_lite_1.default.encodeStream("utf8");o.pipe(e).pipe(t).pipe(i).on("finish",(()=>{r(!0)})).on("error",(e=>{console.error(`转换文件时发生错误: ${e.message}`),a(e)}))}}catch(e){a(e)}})()}))};exports.saveFileAsUtf8=saveFileAsUtf8;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.saveFileAsUtf8=exports.isUtf8File=exports.getBufferCharcodeName=exports.getFileCharcodeName=exports.getFileAllCharcode=void 0;const chardet_1=__importDefault(require("chardet")),fs_1=require("fs"),iconv_lite_1=__importDefault(require("iconv-lite")),buffer_1=require("./buffer"),file_1=require("./file"),getSampleBuffer=async e=>{const t=await(0,file_1.getFileSize)(e);let r=t-1;t>20480&&(r=20480);return await(0,buffer_1.getFileBufferSlice)(e,0,r)},parseCharcodeInfo=e=>{const t=e.find((e=>"UTF-8"===e.name)),r=e.find((e=>e.name.startsWith("GB")));return t?r?t.confidence>=r.confidence?t:r:t:r||e[0]},getFileAllCharcode=async e=>{const t=await getSampleBuffer(e);return chardet_1.default.analyse(t)};exports.getFileAllCharcode=getFileAllCharcode;const getFileCharcodeName=async e=>{const t=await(0,exports.getFileAllCharcode)(e);return parseCharcodeInfo(t).name};exports.getFileCharcodeName=getFileCharcodeName;const getBufferCharcodeName=e=>{const t=chardet_1.default.analyse(e);return parseCharcodeInfo(t).name};exports.getBufferCharcodeName=getBufferCharcodeName;const isUtf8File=async e=>"UTF-8"===await(0,exports.getFileCharcodeName)(e);exports.isUtf8File=isUtf8File;const saveFileAsUtf8=async(e,t)=>{await new Promise(((r,a)=>{const o=(0,fs_1.createReadStream)(e),i=(0,fs_1.createWriteStream)(t);o.on("error",(e=>{console.error(`读取文件时发生错误: ${e.message}`),a(e)})),i.on("error",(e=>{console.error(`写入文件时发生错误: ${e.message}`),a(e)})),(async()=>{try{const t=await(0,file_1.getFileSize)(e),s=Math.min(1023,t),c=await(0,buffer_1.getFileBufferSlice)(e,0,s),f=(0,exports.getBufferCharcodeName)(c);if("UTF-8"===f)o.pipe(i);else{const e=iconv_lite_1.default.decodeStream(f),t=iconv_lite_1.default.encodeStream("utf8");o.pipe(e).pipe(t).pipe(i).on("finish",(()=>{r(!0)})).on("error",(e=>{console.error(`转换文件时发生错误: ${e.message}`),a(e)}))}}catch(e){a(e)}})()}))};exports.saveFileAsUtf8=saveFileAsUtf8;
@@ -0,0 +1,12 @@
1
+ export type ErrorData = {
2
+ code: number;
3
+ message: string;
4
+ stack?: string;
5
+ cause?: string;
6
+ };
7
+ export declare class SimpleError extends Error {
8
+ code: number;
9
+ message: string;
10
+ stack?: string;
11
+ constructor(params: ErrorData);
12
+ }
package/dist/error.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SimpleError=void 0;class SimpleError extends Error{code;message;stack;constructor(e){super(e.message),this.code=e.code,this.message=e.message,this.stack=e.stack,this.name="SimpleError"}}exports.SimpleError=SimpleError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soga/utils",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },