ranuts 0.1.0-alpha
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/index.d.ts +9 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.cjs +2 -0
- package/dist/index.umd.cjs.map +1 -0
- package/package.json +27 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const writeFile = (path, content) => new Promise((resolve, reject) => {
|
|
3
|
+
fs.writeFile(path, content, {
|
|
4
|
+
mode: 438,
|
|
5
|
+
flag: "w+",
|
|
6
|
+
encoding: "utf-8"
|
|
7
|
+
}, (err) => {
|
|
8
|
+
if (err) {
|
|
9
|
+
reject({ status: false, data: err });
|
|
10
|
+
throw err;
|
|
11
|
+
} else {
|
|
12
|
+
resolve({ status: true, data: { path, content } });
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
const readFile = (path, format = "utf-8") => new Promise((resolve, reject) => {
|
|
17
|
+
fs.readFile(path, format, (err, data) => {
|
|
18
|
+
err ? reject({ status: false, data: err }) : resolve({ status: true, data });
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
const watchFile = (path, interval = 20) => new Promise((resolve, reject) => {
|
|
22
|
+
fs.watchFile(path, { interval }, (curr, prev) => {
|
|
23
|
+
if (curr.mtime !== prev.mtime) {
|
|
24
|
+
fs.unwatchFile(path);
|
|
25
|
+
resolve({ status: true, data: { msg: "file is changed" } });
|
|
26
|
+
} else {
|
|
27
|
+
resolve({ status: false, data: { msg: "file is not changed" } });
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
class EventEmitter {
|
|
32
|
+
constructor() {
|
|
33
|
+
this.on = (eventName, callback) => {
|
|
34
|
+
if (this._events[eventName] && eventName !== Symbol.for("new-listener")) {
|
|
35
|
+
this.emit(Symbol.for("new-listener"), eventName);
|
|
36
|
+
}
|
|
37
|
+
const callbacks = this._events[eventName] || [];
|
|
38
|
+
callbacks.push(callback);
|
|
39
|
+
this._events[eventName] = callbacks;
|
|
40
|
+
};
|
|
41
|
+
this.emit = (eventName, ...args) => {
|
|
42
|
+
const callbacks = this._events[eventName] || [];
|
|
43
|
+
callbacks.forEach((cb) => cb(...args));
|
|
44
|
+
};
|
|
45
|
+
this.once = (eventName, callback) => {
|
|
46
|
+
const one = (...args) => {
|
|
47
|
+
callback(...args);
|
|
48
|
+
this.off(eventName, one);
|
|
49
|
+
};
|
|
50
|
+
one.initialCallback = callback;
|
|
51
|
+
this.on(eventName, one);
|
|
52
|
+
};
|
|
53
|
+
this.off = (eventName, callback) => {
|
|
54
|
+
const callbacks = this._events[eventName] || [];
|
|
55
|
+
const newCallbacks = callbacks.filter((fn) => fn != callback && fn.initialCallback != callback);
|
|
56
|
+
this._events[eventName] = newCallbacks;
|
|
57
|
+
};
|
|
58
|
+
this._events = {};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const queryFileInfo = (path) => new Promise((resolve, reject) => {
|
|
62
|
+
fs.stat(path, (err, data) => {
|
|
63
|
+
err ? reject({ status: false, data: err }) : resolve({ status: true, data });
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
const filterObj = (obj, list) => {
|
|
67
|
+
const result = {};
|
|
68
|
+
Object.keys(obj).forEach((item) => {
|
|
69
|
+
if (!list.includes(obj[item])) {
|
|
70
|
+
result[item] = obj[item];
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return result;
|
|
74
|
+
};
|
|
75
|
+
const index = {
|
|
76
|
+
writeFile,
|
|
77
|
+
readFile,
|
|
78
|
+
watchFile,
|
|
79
|
+
EventEmitter,
|
|
80
|
+
queryFileInfo,
|
|
81
|
+
filterObj
|
|
82
|
+
};
|
|
83
|
+
export {
|
|
84
|
+
index as default
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../library/node/fs.ts","../library/function/writeFile.ts","../library/function/readFile.ts","../library/function/watchFile.ts","../library/model/EventEmitter.ts","../library/function/fileInfo.ts","../library/function/filterObj.ts","../index.ts"],"sourcesContent":["const fs = require('fs')\n\nexport default fs","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 根据文件路径创建文件,如果文件存在会清空再写入,如果不存在会创建\n * @param {string} path 文件路径\n * @param {string} content 文件内容\n * @return {Promise}\n */\n\nconst writeFile = (path: string, content: string) => new Promise((resolve, reject) => {\n fs.writeFile(path, content, {\n mode: 438, // 可读可写666,转化为十进制就是438 \n flag: 'w+', // r+并不会清空再写入,w+会清空再写入\n encoding: 'utf-8'\n }, (err: Error) => {\n if (err) {\n reject({ status: false, data: err })\n throw err\n } else {\n resolve({ status: true, data: { path, content } })\n }\n })\n\n})\n\nexport default writeFile","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 读取一个文件,读取成功返回状态码和文件内容\n * @param {string} path 文件路径\n * @param {string} format 读取格式,默认utf-8\n * @return {Promise}\n */\n\nconst readFile = (path: string, format: string = \"utf-8\") =>\n new Promise((resolve, reject) => {\n fs.readFile(path, format, (err: Error, data: string) => {\n err ? reject({ status: false, data: err }) : resolve({ status: true, data });\n });\n });\n\nexport default readFile;\n","import { Stats } from \"fs\";\nimport fs from '@/node/fs'\n\n/**\n * @description: 观察一个文件是否被改变,返回状态\n * @param {string} path 监听的文件路径\n * @param {number} interval 监听的时间,单位毫秒,默认20毫秒\n * @return {Promise}\n */\n\nconst watchFile = (path: string, interval: number = 20) =>\n new Promise((resolve, reject) => {\n fs.watchFile(path, { interval }, (curr: Stats, prev: Stats) => {\n if (curr.mtime !== prev.mtime) {\n fs.unwatchFile(path);\n resolve({ status: true, data: { msg: 'file is changed' } });\n } else {\n resolve({ status: false, data: { msg: 'file is not changed' } })\n }\n })\n });\n\nexport default watchFile;\n\n","\nclass EventEmitter {\n _events: Record<string | symbol, any>;\n constructor() {\n this._events = {};\n }\n\n on = (eventName: string | symbol, callback: any) => {\n if (this._events[eventName] && eventName !== Symbol.for('new-listener')) {\n // 注册一个 newListener 用于监听新的事件订阅\n this.emit(Symbol.for('new-listener'), eventName)\n }\n // 由于一个事件可能注册多个回调函数,所以使用数组来存储事件队列\n const callbacks = this._events[eventName] || [];\n callbacks.push(callback);\n this._events[eventName] = callbacks\n }\n\n emit = (eventName: string | symbol, ...args: any) => {\n const callbacks = this._events[eventName] || [];\n callbacks.forEach((cb: any) => cb(...args))\n }\n\n once = (eventName: string | symbol, callback: any) => {\n // 由于需要在回调函数执行后,取消订阅当前事件,所以需要对传入的回调函数做一层包装,然后绑定包装后的函数\n const one = (...args: any) => {\n callback(...args)\n this.off(eventName, one)\n }\n // 考虑:如果当前事件在未执行,被用户取消订阅,能否取消?\n // 由于:我们订阅事件的时候,修改了原回调函数的引用,所以,用户触发 off 的时候不能找到对应的回调函数\n // 所以,我们需要在当前函数与用户传入的回调函数做一个绑定,我们通过自定义属性来实现\n one.initialCallback = callback;\n this.on(eventName, one)\n }\n\n off = (eventName: string | symbol, callback: any) => {\n // 找到事件对应的回调函数,删除对应的回调函数\n const callbacks = this._events[eventName] || []\n const newCallbacks = callbacks.filter((fn: any) => fn != callback && fn.initialCallback != callback /* 用于once的取消订阅 */)\n this._events[eventName] = newCallbacks;\n }\n\n}\n\nexport default EventEmitter","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 查询一个文件的详细信息,一般用于区分文件还是目录(data.isDirectory())\n * @param {string} path 文件路径\n * @return {Promise}\n */\n\nconst queryFileInfo = (path: string) =>\n new Promise((resolve, reject) => {\n fs.stat(path, (err: Error, data: string) => {\n err ? reject({ status: false, data: err }) : resolve({ status: true, data });\n });\n });\n\nexport default queryFileInfo;","\n\n/**\n * @description: 过滤对象的属性,去除对象中在list数组里面有的属性,返回一个新对象,一般是用于去除空字符和null\n * @param {Object} obj 传入对象\n * @param {Array} list 传入数组\n * @return {Object}\n */\n\nconst filterObj = (obj:Record<string|symbol,any>,list:Array<string|symbol>) => {\n const result:Record<string|symbol,any> = {}\n Object.keys(obj).forEach(item=>{\n if(!list.includes(obj[item])){\n result[item] = obj[item]\n }\n })\n return result\n}\n\nexport default filterObj","import writeFile from \"@/function/writeFile\";\nimport readFile from '@/function/readFile'\nimport watchFile from \"@/function/watchFile\";\nimport EventEmitter from \"@/model/EventEmitter\";\nimport queryFileInfo from \"@/function/fileInfo\";\nimport filterObj from \"@/function/filterObj\";\n\nexport default {\n writeFile,\n readFile,\n watchFile,\n EventEmitter,\n queryFileInfo,\n filterObj\n}"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).ranuts=e()}(this,(function(){"use strict";const t=require("fs");return{writeFile:(e,s)=>new Promise(((i,n)=>{t.writeFile(e,s,{mode:438,flag:"w+",encoding:"utf-8"},(t=>{if(t)throw n({status:!1,data:t}),t;i({status:!0,data:{path:e,content:s}})}))})),readFile:(e,s="utf-8")=>new Promise(((i,n)=>{t.readFile(e,s,((t,e)=>{t?n({status:!1,data:t}):i({status:!0,data:e})}))})),watchFile:(e,s=20)=>new Promise(((i,n)=>{t.watchFile(e,{interval:s},((s,n)=>{s.mtime!==n.mtime?(t.unwatchFile(e),i({status:!0,data:{msg:"file is changed"}})):i({status:!1,data:{msg:"file is not changed"}})}))})),EventEmitter:class{constructor(){this.on=(t,e)=>{this._events[t]&&t!==Symbol.for("new-listener")&&this.emit(Symbol.for("new-listener"),t);const s=this._events[t]||[];s.push(e),this._events[t]=s},this.emit=(t,...e)=>{(this._events[t]||[]).forEach((t=>t(...e)))},this.once=(t,e)=>{const s=(...i)=>{e(...i),this.off(t,s)};s.initialCallback=e,this.on(t,s)},this.off=(t,e)=>{const s=(this._events[t]||[]).filter((t=>t!=e&&t.initialCallback!=e));this._events[t]=s},this._events={}}},queryFileInfo:e=>new Promise(((s,i)=>{t.stat(e,((t,e)=>{t?i({status:!1,data:t}):s({status:!0,data:e})}))})),filterObj:(t,e)=>{const s={};return Object.keys(t).forEach((i=>{e.includes(t[i])||(s[i]=t[i])})),s}}}));
|
|
2
|
+
//# sourceMappingURL=index.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","sources":["../library/node/fs.ts","../index.ts","../library/function/writeFile.ts","../library/function/readFile.ts","../library/function/watchFile.ts","../library/model/EventEmitter.ts","../library/function/fileInfo.ts","../library/function/filterObj.ts"],"sourcesContent":["const fs = require('fs')\n\nexport default fs","import writeFile from \"@/function/writeFile\";\nimport readFile from '@/function/readFile'\nimport watchFile from \"@/function/watchFile\";\nimport EventEmitter from \"@/model/EventEmitter\";\nimport queryFileInfo from \"@/function/fileInfo\";\nimport filterObj from \"@/function/filterObj\";\n\nexport default {\n writeFile,\n readFile,\n watchFile,\n EventEmitter,\n queryFileInfo,\n filterObj\n}","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 根据文件路径创建文件,如果文件存在会清空再写入,如果不存在会创建\n * @param {string} path 文件路径\n * @param {string} content 文件内容\n * @return {Promise}\n */\n\nconst writeFile = (path: string, content: string) => new Promise((resolve, reject) => {\n fs.writeFile(path, content, {\n mode: 438, // 可读可写666,转化为十进制就是438 \n flag: 'w+', // r+并不会清空再写入,w+会清空再写入\n encoding: 'utf-8'\n }, (err: Error) => {\n if (err) {\n reject({ status: false, data: err })\n throw err\n } else {\n resolve({ status: true, data: { path, content } })\n }\n })\n\n})\n\nexport default writeFile","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 读取一个文件,读取成功返回状态码和文件内容\n * @param {string} path 文件路径\n * @param {string} format 读取格式,默认utf-8\n * @return {Promise}\n */\n\nconst readFile = (path: string, format: string = \"utf-8\") =>\n new Promise((resolve, reject) => {\n fs.readFile(path, format, (err: Error, data: string) => {\n err ? reject({ status: false, data: err }) : resolve({ status: true, data });\n });\n });\n\nexport default readFile;\n","import { Stats } from \"fs\";\nimport fs from '@/node/fs'\n\n/**\n * @description: 观察一个文件是否被改变,返回状态\n * @param {string} path 监听的文件路径\n * @param {number} interval 监听的时间,单位毫秒,默认20毫秒\n * @return {Promise}\n */\n\nconst watchFile = (path: string, interval: number = 20) =>\n new Promise((resolve, reject) => {\n fs.watchFile(path, { interval }, (curr: Stats, prev: Stats) => {\n if (curr.mtime !== prev.mtime) {\n fs.unwatchFile(path);\n resolve({ status: true, data: { msg: 'file is changed' } });\n } else {\n resolve({ status: false, data: { msg: 'file is not changed' } })\n }\n })\n });\n\nexport default watchFile;\n\n","\nclass EventEmitter {\n _events: Record<string | symbol, any>;\n constructor() {\n this._events = {};\n }\n\n on = (eventName: string | symbol, callback: any) => {\n if (this._events[eventName] && eventName !== Symbol.for('new-listener')) {\n // 注册一个 newListener 用于监听新的事件订阅\n this.emit(Symbol.for('new-listener'), eventName)\n }\n // 由于一个事件可能注册多个回调函数,所以使用数组来存储事件队列\n const callbacks = this._events[eventName] || [];\n callbacks.push(callback);\n this._events[eventName] = callbacks\n }\n\n emit = (eventName: string | symbol, ...args: any) => {\n const callbacks = this._events[eventName] || [];\n callbacks.forEach((cb: any) => cb(...args))\n }\n\n once = (eventName: string | symbol, callback: any) => {\n // 由于需要在回调函数执行后,取消订阅当前事件,所以需要对传入的回调函数做一层包装,然后绑定包装后的函数\n const one = (...args: any) => {\n callback(...args)\n this.off(eventName, one)\n }\n // 考虑:如果当前事件在未执行,被用户取消订阅,能否取消?\n // 由于:我们订阅事件的时候,修改了原回调函数的引用,所以,用户触发 off 的时候不能找到对应的回调函数\n // 所以,我们需要在当前函数与用户传入的回调函数做一个绑定,我们通过自定义属性来实现\n one.initialCallback = callback;\n this.on(eventName, one)\n }\n\n off = (eventName: string | symbol, callback: any) => {\n // 找到事件对应的回调函数,删除对应的回调函数\n const callbacks = this._events[eventName] || []\n const newCallbacks = callbacks.filter((fn: any) => fn != callback && fn.initialCallback != callback /* 用于once的取消订阅 */)\n this._events[eventName] = newCallbacks;\n }\n\n}\n\nexport default EventEmitter","import fs from '@/node/fs'\n\ntype Error = NodeJS.ErrnoException | null\n\n/**\n * @description: 查询一个文件的详细信息,一般用于区分文件还是目录(data.isDirectory())\n * @param {string} path 文件路径\n * @return {Promise}\n */\n\nconst queryFileInfo = (path: string) =>\n new Promise((resolve, reject) => {\n fs.stat(path, (err: Error, data: string) => {\n err ? reject({ status: false, data: err }) : resolve({ status: true, data });\n });\n });\n\nexport default queryFileInfo;","\n\n/**\n * @description: 过滤对象的属性,去除对象中在list数组里面有的属性,返回一个新对象,一般是用于去除空字符和null\n * @param {Object} obj 传入对象\n * @param {Array} list 传入数组\n * @return {Object}\n */\n\nconst filterObj = (obj:Record<string|symbol,any>,list:Array<string|symbol>) => {\n const result:Record<string|symbol,any> = {}\n Object.keys(obj).forEach(item=>{\n if(!list.includes(obj[item])){\n result[item] = obj[item]\n }\n })\n return result\n}\n\nexport default filterObj"],"names":["fs","require","writeFile","path","content","Promise","resolve","reject","mode","flag","encoding","err","status","data","readFile","format","watchFile","interval","curr","prev","mtime","unwatchFile","msg","EventEmitter","constructor","this","on","eventName","callback","_events","Symbol","for","emit","callbacks","push","args","forEach","cb","once","one","off","initialCallback","newCallbacks","filter","fn","queryFileInfo","stat","filterObj","obj","list","result","Object","keys","item","includes"],"mappings":"uOAAM,MAAAA,EAAKC,QAAQ,YCOJ,CACXC,UCGc,CAACC,EAAcC,IAAoB,IAAIC,SAAQ,CAACC,EAASC,KACpEP,EAAAE,UAAUC,EAAMC,EAAS,CACxBI,KAAM,IACNC,KAAM,KACNC,SAAU,UACVC,IACA,GAAIA,EAEM,MADNJ,EAAO,CAAEK,QAAQ,EAAOC,KAAMF,IACxBA,EAEEL,EAAA,CAAEM,QAAQ,EAAMC,KAAM,CAAEV,OAAMC,YAC1C,GACH,IDdDU,SEEa,CAACX,EAAcY,EAAiB,UAC/C,IAAIV,SAAQ,CAACC,EAASC,KACpBP,EAAGc,SAASX,EAAMY,GAAQ,CAACJ,EAAYE,KACrCF,EAAMJ,EAAO,CAAEK,QAAQ,EAAOC,KAAMF,IAASL,EAAQ,CAAEM,QAAQ,EAAMC,QAAM,GAC5E,IFLDG,UGAc,CAACb,EAAcc,EAAmB,KAClD,IAAIZ,SAAQ,CAACC,EAASC,KACpBP,EAAGgB,UAAUb,EAAM,CAAEc,aAAY,CAACC,EAAaC,KACzCD,EAAKE,QAAUD,EAAKC,OACtBpB,EAAGqB,YAAYlB,GACPG,EAAA,CAAEM,QAAQ,EAAMC,KAAM,CAAES,IAAK,sBAE7BhB,EAAA,CAAEM,QAAQ,EAAOC,KAAM,CAAES,IAAK,wBACxC,GACD,IHRDC,aIVJ,MAEIC,cAIKC,KAAAC,GAAA,CAACC,EAA4BC,KAC1BH,KAAKI,QAAQF,IAAcA,IAAcG,OAAOC,IAAI,iBAEpDN,KAAKO,KAAKF,OAAOC,IAAI,gBAAiBJ,GAG1C,MAAMM,EAAYR,KAAKI,QAAQF,IAAc,GAC7CM,EAAUC,KAAKN,GACfH,KAAKI,QAAQF,GAAaM,CAAA,EAGvBR,KAAAO,KAAA,CAACL,KAA+BQ,MACjBV,KAAKI,QAAQF,IAAc,IACnCS,SAASC,GAAYA,KAAMF,IAAK,EAGvCV,KAAAa,KAAA,CAACX,EAA4BC,KAE1B,MAAAW,EAAM,IAAIJ,KACZP,KAAYO,GACPV,KAAAe,IAAIb,EAAWY,EAAG,EAK3BA,EAAIE,gBAAkBb,EACjBH,KAAAC,GAAGC,EAAWY,EAAG,EAGpBd,KAAAe,IAAA,CAACb,EAA4BC,KAE/B,MACMc,GADYjB,KAAKI,QAAQF,IAAc,IACdgB,QAAQC,GAAYA,GAAMhB,GAAYgB,EAAGH,iBAAmBb,IAC3FH,KAAKI,QAAQF,GAAae,CAAA,EApC1BjB,KAAKI,QAAU,EACnB,GJOAgB,cKFmB1C,GACrB,IAAIE,SAAQ,CAACC,EAASC,KACpBP,EAAG8C,KAAK3C,GAAM,CAACQ,EAAYE,KACzBF,EAAMJ,EAAO,CAAEK,QAAQ,EAAOC,KAAMF,IAASL,EAAQ,CAAEM,QAAQ,EAAMC,QAAM,GAC5E,ILDDkC,UMJc,CAACC,EAA8BC,KAC7C,MAAMC,EAAmC,CAAA,EAMlC,OALPC,OAAOC,KAAKJ,GAAKZ,SAAciB,IACvBJ,EAAKK,SAASN,EAAIK,MAClBH,EAAOG,GAAQL,EAAIK,GACvB,IAEGH,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ranuts",
|
|
3
|
+
"version": "0.1.0-alpha",
|
|
4
|
+
"description": "常用函数",
|
|
5
|
+
"main": "dist/index.umd.cjs",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/chaxus/ran",
|
|
11
|
+
"directory": "packages/ranuts"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/chaxus/ran/tree/main/packages/ranuts/docs",
|
|
14
|
+
"scripts": {
|
|
15
|
+
"dev":"vitepress dev",
|
|
16
|
+
"build": "vite build",
|
|
17
|
+
"test": "vitest"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [],
|
|
20
|
+
"author": "",
|
|
21
|
+
"license": "ISC",
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@vitejs/plugin-legacy": "^2.2.0",
|
|
24
|
+
"vitepress": "0.22.4",
|
|
25
|
+
"vitest": "^0.23.4"
|
|
26
|
+
}
|
|
27
|
+
}
|