Compare commits

..

4 Commits

3 changed files with 34 additions and 17 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "@pushrocks/smartfile",
"version": "8.0.11",
"version": "9.0.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@pushrocks/smartfile",
"version": "8.0.11",
"version": "9.0.1",
"license": "MIT",
"dependencies": {
"@pushrocks/smartfile-interfaces": "^1.0.7",

View File

@ -1,7 +1,7 @@
{
"name": "@pushrocks/smartfile",
"private": false,
"version": "8.0.11",
"version": "9.0.1",
"description": "offers smart ways to work with files in nodejs",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",

View File

@ -3,9 +3,9 @@ import * as fs from './smartfile.fs';
import * as memory from './smartfile.memory';
export interface ISmartfileConstructorOptions {
path?: string;
contentBuffer?: Buffer;
base?: string;
path: string;
contentBuffer: Buffer;
base: string;
}
/**
@ -21,20 +21,26 @@ export class Smartfile extends plugins.smartjson.Smartjson {
* creates a Smartfile from a filePath
* @param filePath
*/
public static async fromFilePath(filePath: string) {
public static async fromFilePath(filePath: string, baseArg: string = process.cwd()) {
filePath = plugins.path.resolve(filePath);
const fileBuffer = fs.toBufferSync(filePath);
const smartfile = new Smartfile({
path: filePath,
contentBuffer: fileBuffer,
base: baseArg,
path: plugins.path.relative(baseArg, filePath),
});
return smartfile;
}
public static async fromBuffer(filePath: string, contentBufferArg: Buffer) {
public static async fromBuffer(
filePath: string,
contentBufferArg: Buffer,
baseArg: string = process.cwd()
) {
const smartfile = new Smartfile({
contentBuffer: contentBufferArg,
path: filePath,
base: baseArg,
path: plugins.path.relative(baseArg, filePath),
});
return smartfile;
@ -43,11 +49,13 @@ export class Smartfile extends plugins.smartjson.Smartjson {
public static async fromString(
filePath: string,
contentStringArg: string,
encodingArg: 'utf8' | 'binary'
encodingArg: 'utf8' | 'binary',
baseArg = process.cwd()
) {
const smartfile = new Smartfile({
contentBuffer: Buffer.from(contentStringArg, encodingArg),
path: filePath,
base: baseArg,
path: plugins.path.relative(baseArg, filePath),
});
return smartfile;
@ -61,7 +69,7 @@ export class Smartfile extends plugins.smartjson.Smartjson {
// INSTANCE
// ========
/**
* the full path of the file on disk
* the relative path of the file
*/
@plugins.smartjson.foldDec()
public path: string;
@ -108,6 +116,14 @@ export class Smartfile extends plugins.smartjson.Smartjson {
this.base = optionsArg.base;
}
public getAbsolutePath () {
return plugins.path.join(this.base, this.path);
}
public getAbsoluteParsedPath() {
return plugins.path.parse(this.getAbsolutePath());
}
/**
* set contents from string
* @param contentString
@ -122,11 +138,12 @@ export class Smartfile extends plugins.smartjson.Smartjson {
* - no argument write to exactly where the file was picked up
*/
public async write() {
await memory.toFs(this.contentBuffer, this.path);
await memory.toFs(this.contentBuffer, plugins.path.join(this.base, this.path));
}
/**
* writes the file to path given as argument
* note: if the path is not absolute, takes process.cwd() as base
* @param filePathArg
*/
public async writeToDiskAtPath(filePathArg: string) {
@ -152,14 +169,14 @@ export class Smartfile extends plugins.smartjson.Smartjson {
* read file from disk
*/
public async read() {
this.contentBuffer = await fs.toBuffer(this.path);
this.contentBuffer = await fs.toBuffer(plugins.path.join(this.base, this.path));
}
/**
* deletes the file from disk at its original location
*/
public async delete() {
await fs.remove(this.path);
await fs.remove(plugins.path.join(this.base, this.path));
}
// -----------------------------------------------
@ -186,7 +203,7 @@ export class Smartfile extends plugins.smartjson.Smartjson {
* return relative path of file
*/
public get relative(): string {
return plugins.path.relative(this.base, this.path);
return this.path;
}
/**