@soga/utils 0.0.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 ADDED
@@ -0,0 +1 @@
1
+ # no desc
@@ -0,0 +1,78 @@
1
+ import * as chardet from 'chardet';
2
+ import { AnalyseResult } from 'chardet';
3
+ import { Manifest, HostType } from '@soga/types';
4
+
5
+ declare const getFileBufferSlice: (file_path: string, start: number, end?: number) => Promise<Buffer<ArrayBuffer>>;
6
+
7
+ declare const gzip: (inputFilePath: string, outputFilePath: string, onProgress?: (params: {
8
+ total: number;
9
+ current: number;
10
+ percent: number;
11
+ }) => void | Promise<void>) => Promise<void>;
12
+ declare const gunzip: (inputFilePath: string, outputFilePath: string, onProgress?: (params: {
13
+ total: number;
14
+ current: number;
15
+ percent: number;
16
+ }) => void | Promise<void>) => Promise<void>;
17
+
18
+ declare const calculateMd5: (param: FileInput) => Promise<string>;
19
+ declare const calculateSha1: (param: FileInput) => Promise<string>;
20
+ declare const calculateMd4: ({ file, start, end, }: {
21
+ file: string;
22
+ start: number;
23
+ end: number;
24
+ }) => Promise<string>;
25
+ type FileInput = {
26
+ file: string;
27
+ start: number;
28
+ end: number;
29
+ };
30
+
31
+ declare const getFileAllCharcode: (filepath: string) => Promise<AnalyseResult>;
32
+ declare const getFileCharcodeName: (filepath: string) => Promise<chardet.EncodingName>;
33
+ declare const getBufferCharcodeName: (buffer: Buffer<ArrayBufferLike>) => chardet.EncodingName;
34
+ declare const isUtf8File: (filepath: string) => Promise<boolean>;
35
+ declare const saveFileAsUtf8: (inputFilePath: string, outputFilePath: string) => Promise<void>;
36
+
37
+ declare const languageMap: Record<string, {
38
+ name: string;
39
+ label: string;
40
+ eng: string;
41
+ lang: string;
42
+ }>;
43
+ declare const languageList: {
44
+ name: string;
45
+ label: string;
46
+ eng: string;
47
+ lang: string;
48
+ }[];
49
+ declare const defaultLanguage: {
50
+ name: string;
51
+ label: string;
52
+ eng: string;
53
+ lang: string;
54
+ };
55
+
56
+ declare const getTextLanguage: (text: string, useDefault?: boolean) => Promise<{
57
+ name: string;
58
+ label: string;
59
+ eng: string;
60
+ lang: string;
61
+ }>;
62
+ declare const getFileLanguage: (filepath: string, useDefault?: boolean) => Promise<{
63
+ name: string;
64
+ label: string;
65
+ eng: string;
66
+ lang: string;
67
+ }>;
68
+
69
+ declare const getProgressPercent: (progress: Record<string, {
70
+ weight: number;
71
+ percent: number;
72
+ }>) => number;
73
+
74
+ declare const calculateManifestHostSize: (manifest: Manifest, host_type: HostType) => number;
75
+
76
+ declare const theUtils = "theUtils2";
77
+
78
+ export { calculateManifestHostSize, calculateMd4, calculateMd5, calculateSha1, defaultLanguage, getBufferCharcodeName, getFileAllCharcode, getFileBufferSlice, getFileCharcodeName, getFileLanguage, getProgressPercent, getTextLanguage, gunzip, gzip, isUtf8File, languageList, languageMap, saveFileAsUtf8, theUtils };
package/dist/main.d.ts ADDED
@@ -0,0 +1,78 @@
1
+ import * as chardet from 'chardet';
2
+ import { AnalyseResult } from 'chardet';
3
+ import { Manifest, HostType } from '@soga/types';
4
+
5
+ declare const getFileBufferSlice: (file_path: string, start: number, end?: number) => Promise<Buffer<ArrayBuffer>>;
6
+
7
+ declare const gzip: (inputFilePath: string, outputFilePath: string, onProgress?: (params: {
8
+ total: number;
9
+ current: number;
10
+ percent: number;
11
+ }) => void | Promise<void>) => Promise<void>;
12
+ declare const gunzip: (inputFilePath: string, outputFilePath: string, onProgress?: (params: {
13
+ total: number;
14
+ current: number;
15
+ percent: number;
16
+ }) => void | Promise<void>) => Promise<void>;
17
+
18
+ declare const calculateMd5: (param: FileInput) => Promise<string>;
19
+ declare const calculateSha1: (param: FileInput) => Promise<string>;
20
+ declare const calculateMd4: ({ file, start, end, }: {
21
+ file: string;
22
+ start: number;
23
+ end: number;
24
+ }) => Promise<string>;
25
+ type FileInput = {
26
+ file: string;
27
+ start: number;
28
+ end: number;
29
+ };
30
+
31
+ declare const getFileAllCharcode: (filepath: string) => Promise<AnalyseResult>;
32
+ declare const getFileCharcodeName: (filepath: string) => Promise<chardet.EncodingName>;
33
+ declare const getBufferCharcodeName: (buffer: Buffer<ArrayBufferLike>) => chardet.EncodingName;
34
+ declare const isUtf8File: (filepath: string) => Promise<boolean>;
35
+ declare const saveFileAsUtf8: (inputFilePath: string, outputFilePath: string) => Promise<void>;
36
+
37
+ declare const languageMap: Record<string, {
38
+ name: string;
39
+ label: string;
40
+ eng: string;
41
+ lang: string;
42
+ }>;
43
+ declare const languageList: {
44
+ name: string;
45
+ label: string;
46
+ eng: string;
47
+ lang: string;
48
+ }[];
49
+ declare const defaultLanguage: {
50
+ name: string;
51
+ label: string;
52
+ eng: string;
53
+ lang: string;
54
+ };
55
+
56
+ declare const getTextLanguage: (text: string, useDefault?: boolean) => Promise<{
57
+ name: string;
58
+ label: string;
59
+ eng: string;
60
+ lang: string;
61
+ }>;
62
+ declare const getFileLanguage: (filepath: string, useDefault?: boolean) => Promise<{
63
+ name: string;
64
+ label: string;
65
+ eng: string;
66
+ lang: string;
67
+ }>;
68
+
69
+ declare const getProgressPercent: (progress: Record<string, {
70
+ weight: number;
71
+ percent: number;
72
+ }>) => number;
73
+
74
+ declare const calculateManifestHostSize: (manifest: Manifest, host_type: HostType) => number;
75
+
76
+ declare const theUtils = "theUtils2";
77
+
78
+ export { calculateManifestHostSize, calculateMd4, calculateMd5, calculateSha1, defaultLanguage, getBufferCharcodeName, getFileAllCharcode, getFileBufferSlice, getFileCharcodeName, getFileLanguage, getProgressPercent, getTextLanguage, gunzip, gzip, isUtf8File, languageList, languageMap, saveFileAsUtf8, theUtils };
package/dist/main.js ADDED
@@ -0,0 +1 @@
1
+ var e,a=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,r=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,g=(e,a,r,g)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let s of t(a))i.call(e,s)||s===r||n(e,s,{get:()=>a[s],enumerable:!(g=l(a,s))||g.enumerable});return e},s=(e,l,t)=>(t=null!=e?a(r(e)):{},g(!l&&e&&e.__esModule?t:n(t,"default",{value:e,enumerable:!0}),e)),o={};((e,a)=>{for(var l in a)n(e,l,{get:a[l],enumerable:!0})})(o,{calculateManifestHostSize:()=>_,calculateMd4:()=>S,calculateMd5:()=>y,calculateSha1:()=>v,defaultLanguage:()=>E,getBufferCharcodeName:()=>T,getFileAllCharcode:()=>q,getFileBufferSlice:()=>m,getFileCharcodeName:()=>M,getFileLanguage:()=>L,getProgressPercent:()=>N,getTextLanguage:()=>H,gunzip:()=>h,gzip:()=>f,isUtf8File:()=>U,languageList:()=>B,languageMap:()=>R,saveFileAsUtf8:()=>C,theUtils:()=>D}),module.exports=(e=o,g(n({},"__esModule",{value:!0}),e));var c=require("fs-extra"),m=async function(e,a,n){const l=(0,c.createReadStream)(e,{start:a,end:n}),t=[];return await new Promise((e,a)=>{l.on("data",e=>{t.push(e)}),l.on("end",()=>{e(!0)}),l.on("error",e=>{a(e)})}),Buffer.concat(t)},u=require("fs-extra"),b=s(require("zlib")),d=require("@soga/fileutils"),f=async(e,a,n)=>{const l=(0,u.createReadStream)(e),t=(0,u.createWriteStream)(a),r=b.default.createGzip(),i=await(0,d.getFileSize)(e);l.pipe(r).pipe(t);let g=0,s=0;await new Promise((e,a)=>{l.on("error",e=>{a(e)}),t.on("error",e=>{a(e)}),l.on("data",async e=>{if(n&&(g+=e.length,g-s>31457280)){s=g;const e=Math.min(g/i,1);await n({total:i,current:g,percent:e})}}),t.on("close",()=>{e(!0)})})},h=async(e,a,n)=>{const l=(0,u.createReadStream)(e),t=(0,u.createWriteStream)(a),r=b.default.createGunzip(),i=await(0,d.getFileSize)(e);l.pipe(r).pipe(t);let g=0,s=0;await new Promise((e,a)=>{l.on("error",e=>{a(e)}),t.on("error",e=>{a(e)}),l.on("data",async e=>{if(n&&(g+=e.length,g-s>31457280)){s=g;const e=Math.min(g/i,1);await n({total:i,current:g,percent:e})}}),t.on("close",()=>{e(!0)})})},p=require("crypto"),w=require("fs-extra"),y=async e=>await k(e,"md5"),v=async e=>await k(e,"sha1"),S=async({file:e,start:a,end:n})=>{const l=Math.min(n,a+262144-1);return await k({file:e,start:a,end:l},"md5")};async function k({file:e,start:a,end:n},l="md5"){const t=(0,p.createHash)(l);await new Promise((l,r)=>{const i=(0,w.createReadStream)(e,{start:a,end:n});i.on("data",e=>{t.update(e)}),i.on("end",()=>{l(!0)}),i.on("error",e=>{r(e)})});return t.digest("hex")}var z=s(require("chardet")),F=require("fs"),P=s(require("iconv-lite")),j=require("@soga/fileutils"),O=e=>{const a=e.find(e=>"UTF-8"===e.name),n=e.find(e=>e.name.startsWith("GB"));return a?n?a.confidence>=n.confidence?a:n:a:n||e[0]},q=async e=>{const a=await(async e=>{const a=await(0,j.getFileSize)(e);let n=a-1;return a>20480&&(n=20480),await m(e,0,n)})(e);return z.default.analyse(a)},M=async e=>{const a=await q(e);return O(a).name},T=e=>{const a=z.default.analyse(e);return O(a).name},U=async e=>"UTF-8"===await M(e),C=async(e,a)=>{await new Promise((n,l)=>{(async()=>{try{const t=(0,F.createReadStream)(e),r=(0,F.createWriteStream)(a);t.on("error",e=>{console.error(`读取文件时发生错误: ${e.message}`),l(e)}),r.on("error",e=>{console.error(`写入文件时发生错误: ${e.message}`),l(e)}),r.on("finish",()=>{n(!0)});const i=await(0,j.getFileSize)(e),g=Math.min(1023,i),s=await m(e,0,g),o=T(s);if("UTF-8"===o)t.pipe(r);else{const e=P.default.decodeStream(o),a=P.default.encodeStream("utf8");t.pipe(e).pipe(a).pipe(r)}}catch(e){l(e)}})()})},R={"zh-cn":{name:"中文简体",label:"中文(简体)",eng:"Chinese (Simplified)",lang:"zh-cn"},"zh-tw":{name:"中文繁体",label:"中文(繁體)",eng:"Chinese (Traditional)",lang:"zh-tw"},en:{name:"英语",label:"English",eng:"English",lang:"en"},af:{name:"南非语",label:"Afrikaans",eng:"Afrikaans",lang:"af"},ar:{name:"阿拉伯语",label:"عربي",eng:"Arabic",lang:"ar"},bg:{name:"保加利亚语",label:"български",eng:"Bulgarian",lang:"bg"},bn:{name:"孟加拉语",label:"বাংলা",eng:"Bengali",lang:"bn"},cs:{name:"捷克语",label:"čeština",eng:"Czech",lang:"cs"},da:{name:"丹麦语",label:"dansk",eng:"Danish",lang:"da"},de:{name:"德语",label:"Deutsch",eng:"German",lang:"de"},el:{name:"希腊语",label:"Ελληνικά",eng:"Greek",lang:"el"},es:{name:"西班牙语",label:"Español",eng:"Spanish",lang:"es"},et:{name:"爱沙尼亚语",label:"eesti",eng:"Estonian",lang:"et"},fa:{name:"波斯语",label:"فارسی",eng:"Persian",lang:"fa"},fi:{name:"芬兰语",label:"Suomalainen",eng:"Finnish",lang:"fi"},fr:{name:"法语",label:"Français",eng:"French",lang:"fr"},gu:{name:"古吉拉特语",label:"ગુજરાતી",eng:"Gujarati",lang:"gu"},he:{name:"希伯来语",label:"עִברִית",eng:"Hebrew",lang:"he"},hi:{name:"印地语",label:"हिंदी",eng:"Hindi",lang:"hi"},hr:{name:"克罗地亚语",label:"Hrvatski",eng:"Croatian",lang:"hr"},hu:{name:"匈牙利语",label:"Magyar",eng:"Hungarian",lang:"hu"},id:{name:"印度尼西亚语",label:"Bahasa Indonesia",eng:"Indonesian",lang:"id"},it:{name:"意大利语",label:"Italiana",eng:"Italian",lang:"it"},ja:{name:"日语",label:"日本語",eng:"Japanese",lang:"ja"},kn:{name:"卡纳达语",label:"ಕನ್ನಡ",eng:"Kannada",lang:"kn"},ko:{name:"朝鲜语",label:"한국인",eng:"Korean",lang:"ko"},lt:{name:"立陶宛语",label:"lietuvių",eng:"Lithuanian",lang:"lt"},lv:{name:"拉脱维亚语",label:"latviski",eng:"Latvian",lang:"lv"},mk:{name:"马其顿语",label:"македонски",eng:"Macedonian",lang:"mk"},ml:{name:"马拉雅拉姆语",label:"മലയാളം",eng:"Malayalam",lang:"ml"},mr:{name:"马拉地语",label:"मराठी",eng:"Marathi",lang:"mr"},ne:{name:"尼泊尔语",label:"नेपाली",eng:"Nepali",lang:"ne"},nl:{name:"荷兰语",label:"Nederlands",eng:"Dutch",lang:"nl"},no:{name:"挪威语",label:"norsk",eng:"Norwegian",lang:"no"},pa:{name:"旁遮普语",label:"ਪੰਜਾਬੀ",eng:"Punjabi",lang:"pa"},pl:{name:"波兰语",label:"Polski",eng:"Polish",lang:"pl"},pt:{name:"葡萄牙语",label:"Português",eng:"Portuguese",lang:"pt"},ro:{name:"罗马尼亚语",label:"Română",eng:"Romanian",lang:"ro"},ru:{name:"俄语",label:"Русский",eng:"Russian",lang:"ru"},sk:{name:"斯洛伐克语",label:"slovenský",eng:"Slovak",lang:"sk"},sl:{name:"斯洛文尼亚语",label:"Slovenščina",eng:"Slovenian",lang:"sl"},so:{name:"索马里语",label:"Soomaali",eng:"Somali",lang:"so"},sq:{name:"阿尔巴尼亚语",label:"shqiptare",eng:"Albanian",lang:"sq"},sv:{name:"瑞典语",label:"svenska",eng:"Swedish",lang:"sv"},sw:{name:"斯瓦希里语",label:"kiswahili",eng:"Swahili",lang:"sw"},ta:{name:"泰米尔语",label:"தமிழ்",eng:"Tamil",lang:"ta"},te:{name:"泰卢固语",label:"తెలుగు",eng:"Telugu",lang:"te"},th:{name:"泰语",label:"แบบไทย",eng:"Thai",lang:"th"},tl:{name:"他加禄语",label:"Tagalog",eng:"Tagalog",lang:"tl"},tr:{name:"土耳其语",label:"Türkçe",eng:"Turkish",lang:"tr"},uk:{name:"乌克兰语",label:"українська",eng:"Ukrainian",lang:"uk"},ur:{name:"乌尔都语",label:"اردو",eng:"Urdu",lang:"ur"},vi:{name:"越南语",label:"Tiếng Việt",eng:"Vietnamese",lang:"vi"}},B=Object.keys(R).map(e=>R[e]),E=R.en,x=require("@soga/fileutils"),A=s(require("langdetect")),G=s(require("iconv-lite")),H=async(e,a=!0)=>{try{const n=A.default.detectOne(e);return n||a?n&&R[n]?R[n]:E:null}catch(e){return E}},L=async(e,a=!0)=>{const n=await(async e=>{const a=await(0,x.getFileSize)(e);let n=a-1;return a>20480&&(n=20480),await m(e,0,n)})(e),l=T(n);let t="";t="UTF-8"==l.toUpperCase()?n.toString("utf8"):G.default.decode(n,l);const r=function(e){const a=e.replace(/[\d:,.()[\]+-_@*]/gm,"");return a}(t);return await H(r,a)};var N=e=>{const a=Object.values(e).reduce((e,a)=>e+a.weight,0);return Object.values(e).reduce((e,a)=>e+a.weight*a.percent,0)/a},_=(e,a)=>{const n=e[a]?.files||{},l=e.attachments||[];let t=0;const r={};return Object.values(n).forEach(e=>{r[e.md5]||(t+=e.size,r[e.md5]=!0)}),Object.values(l).forEach(e=>{const n=e[a],l=n?.files||{};Object.values(l).forEach(e=>{r[e.md5]||(t+=e.size,r[e.md5]=!0)})}),t},D="theUtils2";
package/dist/main.mjs ADDED
@@ -0,0 +1 @@
1
+ import{createReadStream as a}from"fs-extra";var e=async function(e,n,l){const t=a(e,{start:n,end:l}),r=[];return await new Promise((a,e)=>{t.on("data",a=>{r.push(a)}),t.on("end",()=>{a(!0)}),t.on("error",a=>{e(a)})}),Buffer.concat(r)};import{createReadStream as n,createWriteStream as l}from"fs-extra";import t from"zlib";import{getFileSize as r}from"@soga/fileutils";var i=async(a,e,i)=>{const s=n(a),o=l(e),g=t.createGzip(),m=await r(a);s.pipe(g).pipe(o);let c=0,b=0;await new Promise((a,e)=>{s.on("error",a=>{e(a)}),o.on("error",a=>{e(a)}),s.on("data",async a=>{if(i&&(c+=a.length,c-b>31457280)){b=c;const a=Math.min(c/m,1);await i({total:m,current:c,percent:a})}}),o.on("close",()=>{a(!0)})})},s=async(a,e,i)=>{const s=n(a),o=l(e),g=t.createGunzip(),m=await r(a);s.pipe(g).pipe(o);let c=0,b=0;await new Promise((a,e)=>{s.on("error",a=>{e(a)}),o.on("error",a=>{e(a)}),s.on("data",async a=>{if(i&&(c+=a.length,c-b>31457280)){b=c;const a=Math.min(c/m,1);await i({total:m,current:c,percent:a})}}),o.on("close",()=>{a(!0)})})};import{createHash as o}from"crypto";import{createReadStream as g}from"fs-extra";var m=async a=>await u(a,"md5"),c=async a=>await u(a,"sha1"),b=async({file:a,start:e,end:n})=>{const l=Math.min(n,e+262144-1);return await u({file:a,start:e,end:l},"md5")};async function u({file:a,start:e,end:n},l="md5"){const t=o(l);await new Promise((l,r)=>{const i=g(a,{start:e,end:n});i.on("data",a=>{t.update(a)}),i.on("end",()=>{l(!0)}),i.on("error",a=>{r(a)})});return t.digest("hex")}import d from"chardet";import{createReadStream as h,createWriteStream as f}from"fs";import p from"iconv-lite";import{getFileSize as w}from"@soga/fileutils";var v=a=>{const e=a.find(a=>"UTF-8"===a.name),n=a.find(a=>a.name.startsWith("GB"));return e?n?e.confidence>=n.confidence?e:n:e:n||a[0]},k=async a=>{const n=await(async a=>{const n=await w(a);let l=n-1;return n>20480&&(l=20480),await e(a,0,l)})(a);return d.analyse(n)},y=async a=>{const e=await k(a);return v(e).name},S=a=>{const e=d.analyse(a);return v(e).name},T=async a=>"UTF-8"===await y(a),z=async(a,n)=>{await new Promise((l,t)=>{(async()=>{try{const r=h(a),i=f(n);r.on("error",a=>{console.error(`读取文件时发生错误: ${a.message}`),t(a)}),i.on("error",a=>{console.error(`写入文件时发生错误: ${a.message}`),t(a)}),i.on("finish",()=>{l(!0)});const s=await w(a),o=Math.min(1023,s),g=await e(a,0,o),m=S(g);if("UTF-8"===m)r.pipe(i);else{const a=p.decodeStream(m),e=p.encodeStream("utf8");r.pipe(a).pipe(e).pipe(i)}}catch(a){t(a)}})()})},P={"zh-cn":{name:"中文简体",label:"中文(简体)",eng:"Chinese (Simplified)",lang:"zh-cn"},"zh-tw":{name:"中文繁体",label:"中文(繁體)",eng:"Chinese (Traditional)",lang:"zh-tw"},en:{name:"英语",label:"English",eng:"English",lang:"en"},af:{name:"南非语",label:"Afrikaans",eng:"Afrikaans",lang:"af"},ar:{name:"阿拉伯语",label:"عربي",eng:"Arabic",lang:"ar"},bg:{name:"保加利亚语",label:"български",eng:"Bulgarian",lang:"bg"},bn:{name:"孟加拉语",label:"বাংলা",eng:"Bengali",lang:"bn"},cs:{name:"捷克语",label:"čeština",eng:"Czech",lang:"cs"},da:{name:"丹麦语",label:"dansk",eng:"Danish",lang:"da"},de:{name:"德语",label:"Deutsch",eng:"German",lang:"de"},el:{name:"希腊语",label:"Ελληνικά",eng:"Greek",lang:"el"},es:{name:"西班牙语",label:"Español",eng:"Spanish",lang:"es"},et:{name:"爱沙尼亚语",label:"eesti",eng:"Estonian",lang:"et"},fa:{name:"波斯语",label:"فارسی",eng:"Persian",lang:"fa"},fi:{name:"芬兰语",label:"Suomalainen",eng:"Finnish",lang:"fi"},fr:{name:"法语",label:"Français",eng:"French",lang:"fr"},gu:{name:"古吉拉特语",label:"ગુજરાતી",eng:"Gujarati",lang:"gu"},he:{name:"希伯来语",label:"עִברִית",eng:"Hebrew",lang:"he"},hi:{name:"印地语",label:"हिंदी",eng:"Hindi",lang:"hi"},hr:{name:"克罗地亚语",label:"Hrvatski",eng:"Croatian",lang:"hr"},hu:{name:"匈牙利语",label:"Magyar",eng:"Hungarian",lang:"hu"},id:{name:"印度尼西亚语",label:"Bahasa Indonesia",eng:"Indonesian",lang:"id"},it:{name:"意大利语",label:"Italiana",eng:"Italian",lang:"it"},ja:{name:"日语",label:"日本語",eng:"Japanese",lang:"ja"},kn:{name:"卡纳达语",label:"ಕನ್ನಡ",eng:"Kannada",lang:"kn"},ko:{name:"朝鲜语",label:"한국인",eng:"Korean",lang:"ko"},lt:{name:"立陶宛语",label:"lietuvių",eng:"Lithuanian",lang:"lt"},lv:{name:"拉脱维亚语",label:"latviski",eng:"Latvian",lang:"lv"},mk:{name:"马其顿语",label:"македонски",eng:"Macedonian",lang:"mk"},ml:{name:"马拉雅拉姆语",label:"മലയാളം",eng:"Malayalam",lang:"ml"},mr:{name:"马拉地语",label:"मराठी",eng:"Marathi",lang:"mr"},ne:{name:"尼泊尔语",label:"नेपाली",eng:"Nepali",lang:"ne"},nl:{name:"荷兰语",label:"Nederlands",eng:"Dutch",lang:"nl"},no:{name:"挪威语",label:"norsk",eng:"Norwegian",lang:"no"},pa:{name:"旁遮普语",label:"ਪੰਜਾਬੀ",eng:"Punjabi",lang:"pa"},pl:{name:"波兰语",label:"Polski",eng:"Polish",lang:"pl"},pt:{name:"葡萄牙语",label:"Português",eng:"Portuguese",lang:"pt"},ro:{name:"罗马尼亚语",label:"Română",eng:"Romanian",lang:"ro"},ru:{name:"俄语",label:"Русский",eng:"Russian",lang:"ru"},sk:{name:"斯洛伐克语",label:"slovenský",eng:"Slovak",lang:"sk"},sl:{name:"斯洛文尼亚语",label:"Slovenščina",eng:"Slovenian",lang:"sl"},so:{name:"索马里语",label:"Soomaali",eng:"Somali",lang:"so"},sq:{name:"阿尔巴尼亚语",label:"shqiptare",eng:"Albanian",lang:"sq"},sv:{name:"瑞典语",label:"svenska",eng:"Swedish",lang:"sv"},sw:{name:"斯瓦希里语",label:"kiswahili",eng:"Swahili",lang:"sw"},ta:{name:"泰米尔语",label:"தமிழ்",eng:"Tamil",lang:"ta"},te:{name:"泰卢固语",label:"తెలుగు",eng:"Telugu",lang:"te"},th:{name:"泰语",label:"แบบไทย",eng:"Thai",lang:"th"},tl:{name:"他加禄语",label:"Tagalog",eng:"Tagalog",lang:"tl"},tr:{name:"土耳其语",label:"Türkçe",eng:"Turkish",lang:"tr"},uk:{name:"乌克兰语",label:"українська",eng:"Ukrainian",lang:"uk"},ur:{name:"乌尔都语",label:"اردو",eng:"Urdu",lang:"ur"},vi:{name:"越南语",label:"Tiếng Việt",eng:"Vietnamese",lang:"vi"}},j=Object.keys(P).map(a=>P[a]),F=P.en;import{getFileSize as M}from"@soga/fileutils";import U from"langdetect";import E from"iconv-lite";var O=async(a,e=!0)=>{try{const n=U.detectOne(a);return n||e?n&&P[n]?P[n]:F:null}catch(a){return F}},G=async(a,n=!0)=>{const l=await(async a=>{const n=await M(a);let l=n-1;return n>20480&&(l=20480),await e(a,0,l)})(a),t=S(l);let r="";r="UTF-8"==t.toUpperCase()?l.toString("utf8"):E.decode(l,t);const i=function(a){const e=a.replace(/[\d:,.()[\]+-_@*]/gm,"");return e}(r);return await O(i,n)};var R=a=>{const e=Object.values(a).reduce((a,e)=>a+e.weight,0);return Object.values(a).reduce((a,e)=>a+e.weight*e.percent,0)/e},x=(a,e)=>{const n=a[e]?.files||{},l=a.attachments||[];let t=0;const r={};return Object.values(n).forEach(a=>{r[a.md5]||(t+=a.size,r[a.md5]=!0)}),Object.values(l).forEach(a=>{const n=a[e],l=n?.files||{};Object.values(l).forEach(a=>{r[a.md5]||(t+=a.size,r[a.md5]=!0)})}),t},B="theUtils2";export{x as calculateManifestHostSize,b as calculateMd4,m as calculateMd5,c as calculateSha1,F as defaultLanguage,S as getBufferCharcodeName,k as getFileAllCharcode,e as getFileBufferSlice,y as getFileCharcodeName,G as getFileLanguage,R as getProgressPercent,O as getTextLanguage,s as gunzip,i as gzip,T as isUtf8File,j as languageList,P as languageMap,z as saveFileAsUtf8,B as theUtils};
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@soga/utils",
3
+ "version": "0.0.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "",
8
+ "main": "dist/main.js",
9
+ "types": "dist/main.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "rimraf dist && tsup src/main.ts --format cjs,esm --dts --minify terser",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "devDependencies": {
18
+ "tsup": "^8.5.0",
19
+ "@types/langdetect": "^0.2.2",
20
+ "@types/fs-extra": "^11.0.4",
21
+ "rimraf": "^6.0.1",
22
+ "terser": "^5.43.1",
23
+ "typescript": "^5.8.3",
24
+ "@soga/typescript-config": "latest"
25
+ },
26
+ "keywords": [],
27
+ "author": "",
28
+ "license": "ISC",
29
+ "dependencies": {
30
+ "chardet": "^2.1.0",
31
+ "fs-extra": "^11.3.2",
32
+ "iconv-lite": "^0.6.3",
33
+ "langdetect": "^0.2.1",
34
+ "@soga/fileutils": "latest",
35
+ "@soga/types": "latest"
36
+ }
37
+ }