164 lines
4.3 KiB
TypeScript
164 lines
4.3 KiB
TypeScript
// node native
|
|
import * as dns from 'dns';
|
|
import * as fs from 'fs';
|
|
import * as crypto from 'crypto';
|
|
import * as http from 'http';
|
|
import * as net from 'net';
|
|
import * as os from 'os';
|
|
import * as path from 'path';
|
|
import * as tls from 'tls';
|
|
import * as util from 'util';
|
|
|
|
export {
|
|
dns,
|
|
fs,
|
|
crypto,
|
|
http,
|
|
net,
|
|
os,
|
|
path,
|
|
tls,
|
|
util,
|
|
}
|
|
|
|
// @serve.zone scope
|
|
import * as servezoneInterfaces from '@serve.zone/interfaces';
|
|
|
|
export {
|
|
servezoneInterfaces
|
|
}
|
|
|
|
// @api.global scope
|
|
import * as typedrequest from '@api.global/typedrequest';
|
|
import * as typedserver from '@api.global/typedserver';
|
|
import * as typedsocket from '@api.global/typedsocket';
|
|
|
|
export {
|
|
typedrequest,
|
|
typedserver,
|
|
typedsocket,
|
|
}
|
|
|
|
// @push.rocks scope
|
|
import * as projectinfo from '@push.rocks/projectinfo';
|
|
import * as qenv from '@push.rocks/qenv';
|
|
import * as smartacme from '@push.rocks/smartacme';
|
|
import * as smartdata from '@push.rocks/smartdata';
|
|
import * as smartdns from '@push.rocks/smartdns';
|
|
import * as smartfile from '@push.rocks/smartfile';
|
|
import * as smartguard from '@push.rocks/smartguard';
|
|
import * as smartjwt from '@push.rocks/smartjwt';
|
|
import * as smartlog from '@push.rocks/smartlog';
|
|
import * as smartmail from '@push.rocks/smartmail';
|
|
import * as smartmetrics from '@push.rocks/smartmetrics';
|
|
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
import * as smartpath from '@push.rocks/smartpath';
|
|
import * as smartproxy from '@push.rocks/smartproxy';
|
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
import * as smartrequest from '@push.rocks/smartrequest';
|
|
import * as smartrule from '@push.rocks/smartrule';
|
|
import * as smartrx from '@push.rocks/smartrx';
|
|
import * as smartunique from '@push.rocks/smartunique';
|
|
|
|
export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfile, smartguard, smartjwt, smartlog, smartmail, smartmetrics, smartnetwork, smartpath, smartproxy, smartpromise, smartrequest, smartrule, smartrx, smartunique };
|
|
|
|
// Define SmartLog types for use in error handling
|
|
export type TLogLevel = 'error' | 'warn' | 'info' | 'success' | 'debug';
|
|
|
|
// apiclient.xyz scope
|
|
import * as cloudflare from '@apiclient.xyz/cloudflare';
|
|
|
|
export {
|
|
cloudflare,
|
|
}
|
|
|
|
// tsclass scope
|
|
import * as tsclass from '@tsclass/tsclass';
|
|
|
|
export {
|
|
tsclass,
|
|
}
|
|
|
|
// third party
|
|
import * as mailauth from 'mailauth';
|
|
import { dkimSign } from 'mailauth/lib/dkim/sign.js';
|
|
import mailparser from 'mailparser';
|
|
import * as uuid from 'uuid';
|
|
import * as ip from 'ip';
|
|
|
|
export {
|
|
mailauth,
|
|
dkimSign,
|
|
mailparser,
|
|
uuid,
|
|
ip,
|
|
}
|
|
|
|
// Filesystem utilities (compatibility helpers for smartfile v13+)
|
|
export const fsUtils = {
|
|
/**
|
|
* Ensure a directory exists, creating it recursively if needed (sync)
|
|
*/
|
|
ensureDirSync: (dirPath: string): void => {
|
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
},
|
|
|
|
/**
|
|
* Ensure a directory exists, creating it recursively if needed (async)
|
|
*/
|
|
ensureDir: async (dirPath: string): Promise<void> => {
|
|
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
},
|
|
|
|
/**
|
|
* Write JSON content to a file synchronously
|
|
*/
|
|
toFsSync: (content: any, filePath: string): void => {
|
|
const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
|
|
fs.writeFileSync(filePath, data);
|
|
},
|
|
|
|
/**
|
|
* Write JSON content to a file asynchronously
|
|
*/
|
|
toFs: async (content: any, filePath: string): Promise<void> => {
|
|
const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
|
|
await fs.promises.writeFile(filePath, data);
|
|
},
|
|
|
|
/**
|
|
* Check if a file or directory exists
|
|
*/
|
|
fileExistsSync: (filePath: string): boolean => {
|
|
return fs.existsSync(filePath);
|
|
},
|
|
|
|
/**
|
|
* Check if a file or directory exists (async)
|
|
*/
|
|
fileExists: async (filePath: string): Promise<boolean> => {
|
|
try {
|
|
await fs.promises.access(filePath);
|
|
return true;
|
|
} catch {
|
|
return false;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Read a JSON file synchronously
|
|
*/
|
|
toObjectSync: <T = any>(filePath: string): T => {
|
|
const content = fs.readFileSync(filePath, 'utf8');
|
|
return JSON.parse(content) as T;
|
|
},
|
|
|
|
/**
|
|
* Read a JSON file asynchronously
|
|
*/
|
|
toObject: async <T = any>(filePath: string): Promise<T> => {
|
|
const content = await fs.promises.readFile(filePath, 'utf8');
|
|
return JSON.parse(content) as T;
|
|
},
|
|
};
|