Comparing version 0.0.2 to 0.0.3
@@ -1,4 +0,5 @@ | ||
export declare function KVStorage({ runtime, storageName }: { | ||
export declare function KVStorage({ runtime, databaseName, storageName }: { | ||
runtime?: string; | ||
storageName?: string; | ||
databaseName?: string; | ||
}): Promise<any>; |
@@ -36,3 +36,3 @@ "use strict"; | ||
exports.KVStorage = void 0; | ||
function KVStorage({ runtime = 'node', storageName = 'storage' }) { | ||
function KVStorage({ runtime = 'node', databaseName = 'kvstorage', storageName = 'storage' }) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -51,9 +51,27 @@ function isAlphanumeric(str) { | ||
case 'node': | ||
const runtime = yield Promise.resolve().then(() => __importStar(require('./node-kv-storage'))); | ||
const db = yield runtime.NodeKVStorage.init({ | ||
const runnode = yield Promise.resolve().then(() => __importStar(require('./node-kv-storage'))); | ||
const dbnode = yield runnode.NodeKVStorage.init({ | ||
dataDirName: databaseName, | ||
storageName | ||
}); | ||
return db; | ||
return dbnode; | ||
break; | ||
case 'deno': | ||
const rundeno = yield Promise.resolve().then(() => __importStar(require('./deno-kv-storage'))); | ||
const dbdeno = yield rundeno.DenoKVStorage.init({ | ||
dataDirName: databaseName, | ||
storageName | ||
}); | ||
return dbdeno; | ||
break; | ||
case 'browser': | ||
let browserpkg = './browser-kv-storage'; | ||
if (window) | ||
browserpkg = './browser-kv-storage.js'; | ||
const runbrowser = yield Promise.resolve(`${browserpkg}`).then(s => __importStar(require(s))); | ||
const dbbrowser = yield runbrowser.BrowserKVStorage.init({ | ||
databaseName, | ||
storageName | ||
}); | ||
return dbbrowser; | ||
break; | ||
@@ -60,0 +78,0 @@ default: |
@@ -10,8 +10,7 @@ export declare class NodeKVStorage { | ||
}): Promise<NodeKVStorage>; | ||
private makeDirSync; | ||
private makeDir; | ||
put(key: string, value: string): Promise<unknown>; | ||
get(key: string): Promise<unknown>; | ||
delete(key: string): Promise<unknown>; | ||
has(key: string): Promise<unknown>; | ||
list(): Promise<unknown>; | ||
} |
@@ -42,3 +42,3 @@ "use strict"; | ||
if (err) { | ||
resolve(false); | ||
throw err; | ||
} | ||
@@ -67,24 +67,11 @@ else { | ||
} | ||
makeDirSync(dir) { | ||
put(key, value) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
if (!fs_1.default.existsSync(dir)) { | ||
fs_1.default.mkdirSync(dir, { | ||
recursive: true | ||
}); | ||
} | ||
}); | ||
} | ||
makeDir(dir) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return new Promise((resolve) => { | ||
fs_1.default.stat(dir, (err) => { | ||
if (!this.isAlphanumeric(key)) | ||
this.showError('Key must be Alphanumeric'); | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs_1.default.writeFile(keyFilePath, value, (err) => { | ||
if (err) { | ||
fs_1.default.mkdir(dir, { recursive: true }, (err, path) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(true); | ||
} | ||
}); | ||
resolve(false); | ||
} | ||
@@ -98,3 +85,3 @@ else { | ||
} | ||
put(key, value) { | ||
get(key) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -105,3 +92,3 @@ return new Promise((resolve) => { | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs_1.default.writeFile(keyFilePath, value, (err) => { | ||
fs_1.default.readFile(keyFilePath, (err, data) => { | ||
if (err) { | ||
@@ -111,3 +98,3 @@ resolve(false); | ||
else { | ||
resolve(true); | ||
resolve(data.toString('utf8', 0, data.length)); | ||
} | ||
@@ -118,3 +105,3 @@ }); | ||
} | ||
get(key) { | ||
delete(key) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -125,15 +112,8 @@ return new Promise((resolve) => { | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs_1.default.stat(keyFilePath, (err) => { | ||
fs_1.default.unlink(keyFilePath, (err) => { | ||
if (err) { | ||
resolve(null); | ||
resolve(false); | ||
} | ||
else { | ||
fs_1.default.readFile(keyFilePath, (err, data) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(data.toString('utf8', 0, data.length)); | ||
} | ||
}); | ||
resolve(true); | ||
} | ||
@@ -144,3 +124,3 @@ }); | ||
} | ||
delete(key) { | ||
has(key) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -153,13 +133,6 @@ return new Promise((resolve) => { | ||
if (err) { | ||
resolve(null); | ||
resolve(false); | ||
} | ||
else { | ||
fs_1.default.unlink(keyFilePath, (err) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(true); | ||
} | ||
}); | ||
resolve(true); | ||
} | ||
@@ -175,3 +148,3 @@ }); | ||
if (err) { | ||
throw err; | ||
resolve(false); | ||
} | ||
@@ -178,0 +151,0 @@ else { |
@@ -1,4 +0,5 @@ | ||
export declare function KVStorage({ runtime, storageName }: { | ||
export declare function KVStorage({ runtime, databaseName, storageName }: { | ||
runtime?: string; | ||
storageName?: string; | ||
databaseName?: string; | ||
}): Promise<any>; |
@@ -1,2 +0,2 @@ | ||
export async function KVStorage({ runtime = 'node', storageName = 'storage' }) { | ||
export async function KVStorage({ runtime = 'node', databaseName = 'kvstorage', storageName = 'storage' }) { | ||
function isAlphanumeric(str) { | ||
@@ -14,9 +14,27 @@ return /^[a-zA-Z0-9]+$/.test(str); | ||
case 'node': | ||
const runtime = await import('./node-kv-storage'); | ||
const db = await runtime.NodeKVStorage.init({ | ||
const runnode = await import('./node-kv-storage'); | ||
const dbnode = await runnode.NodeKVStorage.init({ | ||
dataDirName: databaseName, | ||
storageName | ||
}); | ||
return db; | ||
return dbnode; | ||
break; | ||
case 'deno': | ||
const rundeno = await import('./deno-kv-storage'); | ||
const dbdeno = await rundeno.DenoKVStorage.init({ | ||
dataDirName: databaseName, | ||
storageName | ||
}); | ||
return dbdeno; | ||
break; | ||
case 'browser': | ||
let browserpkg = './browser-kv-storage'; | ||
if (window) | ||
browserpkg = './browser-kv-storage.js'; | ||
const runbrowser = await import(browserpkg); | ||
const dbbrowser = await runbrowser.BrowserKVStorage.init({ | ||
databaseName, | ||
storageName | ||
}); | ||
return dbbrowser; | ||
break; | ||
@@ -23,0 +41,0 @@ default: |
@@ -10,8 +10,7 @@ export declare class NodeKVStorage { | ||
}): Promise<NodeKVStorage>; | ||
private makeDirSync; | ||
private makeDir; | ||
put(key: string, value: string): Promise<unknown>; | ||
get(key: string): Promise<unknown>; | ||
delete(key: string): Promise<unknown>; | ||
has(key: string): Promise<unknown>; | ||
list(): Promise<unknown>; | ||
} |
@@ -26,3 +26,3 @@ import fs from 'fs'; | ||
if (err) { | ||
resolve(false); | ||
throw err; | ||
} | ||
@@ -49,21 +49,10 @@ else { | ||
} | ||
async makeDirSync(dir) { | ||
if (!fs.existsSync(dir)) { | ||
fs.mkdirSync(dir, { | ||
recursive: true | ||
}); | ||
} | ||
} | ||
async makeDir(dir) { | ||
async put(key, value) { | ||
return new Promise((resolve) => { | ||
fs.stat(dir, (err) => { | ||
if (!this.isAlphanumeric(key)) | ||
this.showError('Key must be Alphanumeric'); | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs.writeFile(keyFilePath, value, (err) => { | ||
if (err) { | ||
fs.mkdir(dir, { recursive: true }, (err, path) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(true); | ||
} | ||
}); | ||
resolve(false); | ||
} | ||
@@ -76,3 +65,3 @@ else { | ||
} | ||
async put(key, value) { | ||
async get(key) { | ||
return new Promise((resolve) => { | ||
@@ -82,3 +71,3 @@ if (!this.isAlphanumeric(key)) | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs.writeFile(keyFilePath, value, (err) => { | ||
fs.readFile(keyFilePath, (err, data) => { | ||
if (err) { | ||
@@ -88,3 +77,3 @@ resolve(false); | ||
else { | ||
resolve(true); | ||
resolve(data.toString('utf8', 0, data.length)); | ||
} | ||
@@ -94,3 +83,3 @@ }); | ||
} | ||
async get(key) { | ||
async delete(key) { | ||
return new Promise((resolve) => { | ||
@@ -100,15 +89,8 @@ if (!this.isAlphanumeric(key)) | ||
const keyFilePath = this._storageDir + '/' + key; | ||
fs.stat(keyFilePath, (err) => { | ||
fs.unlink(keyFilePath, (err) => { | ||
if (err) { | ||
resolve(null); | ||
resolve(false); | ||
} | ||
else { | ||
fs.readFile(keyFilePath, (err, data) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(data.toString('utf8', 0, data.length)); | ||
} | ||
}); | ||
resolve(true); | ||
} | ||
@@ -118,3 +100,3 @@ }); | ||
} | ||
async delete(key) { | ||
async has(key) { | ||
return new Promise((resolve) => { | ||
@@ -126,13 +108,6 @@ if (!this.isAlphanumeric(key)) | ||
if (err) { | ||
resolve(null); | ||
resolve(false); | ||
} | ||
else { | ||
fs.unlink(keyFilePath, (err) => { | ||
if (err) { | ||
resolve(false); | ||
} | ||
else { | ||
resolve(true); | ||
} | ||
}); | ||
resolve(true); | ||
} | ||
@@ -146,3 +121,3 @@ }); | ||
if (err) { | ||
throw err; | ||
resolve(false); | ||
} | ||
@@ -149,0 +124,0 @@ else { |
{ | ||
"name": "kv-storage", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers", | ||
@@ -19,3 +19,4 @@ "main": "dist/cjs/kv-storage.js", | ||
"dev-ts": "nodemon -e js,ts --watch src --watch test --exec \"ts-node test/server\"", | ||
"dev-deno": "nodemon -e js,ts --watch src --watch test --exec \"deno run --allow-read --allow-write test/server-deno.ts\"", | ||
"dev-browser": "nodemon -e js,ts,html --watch src --watch test --exec \"npm run prepare-public && tsc -p tsconfig-browser.json && ts-node test/server-browser.ts\"", | ||
"dev-deno": "nodemon -e js,ts --watch src --watch test --exec \"deno run --allow-read --allow-write --unstable-sloppy-imports test/server-deno.ts\"", | ||
"dev": "nodemon -e js,ts --watch src --watch test --exec \"npm run build && npm start\"", | ||
@@ -27,3 +28,4 @@ "dev-mjs": "nodemon -e js,ts --watch src --watch test --exec \"npm run start-mjs\"", | ||
"prepare-typedoc": "if not exist .\\docs (mkdir docs) else (rmdir /S /Q .\\docs\\)", | ||
"typedoc":"npm run prepare-typedoc && typedoc src/kv-storage.ts src/node-kv-storage.ts src/deno-kv-storage.ts", | ||
"prepare-public": "if not exist .\\public (mkdir public) else (rmdir /S /Q .\\public\\)", | ||
"typedoc":"npm run prepare-typedoc && typedoc src/kv-storage.ts src/node-kv-storage.ts src/deno-kv-storage.ts src/browser-kv-storage.ts", | ||
"gh-deploy": "git push origin :gh-pages && git subtree push --prefix docs origin gh-pages", | ||
@@ -30,0 +32,0 @@ "gh-deploy-init": "git push origin && git subtree push --prefix docs origin gh-pages" |
# kv-storage | ||
Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers | ||
[![NPM](https://nodei.co/npm/kv-storage.png?mini=true)](https://www.npmjs.com/package/kv-storage) | ||
[![npm version](https://badge.fury.io/js/kv-storage.svg)](https://www.npmjs.com/package/kv-storage) | ||
## Features | ||
@@ -15,3 +17,2 @@ | ||
## Installation | ||
```javascript | ||
@@ -27,3 +28,3 @@ npm install kv-storage | ||
//Node ES Modules import style | ||
//Node & Browser ES Modules import style | ||
import {KVStorage} from 'kv-storage' | ||
@@ -35,3 +36,3 @@ | ||
const db = await KVStorage({ | ||
runtime:'node', //node | deno | ||
runtime:'node', //node | deno | browser | ||
storageName:'storage' | ||
@@ -85,3 +86,3 @@ }) | ||
const db = await KVStorage({ | ||
runtime:'node', | ||
runtime:'deno', | ||
storageName:'storage' | ||
@@ -98,2 +99,22 @@ }) | ||
```javascript | ||
<script type="module"> | ||
//Directly in Browser example | ||
import {KVStorage} from 'https://cdn.jsdelivr.net/npm/kv-storage@0.0.3/dist/mjs/kv-storage.js' | ||
void async function main() { | ||
const db = await KVStorage({ | ||
runtime:'browser', | ||
storageName:'storage' | ||
}) | ||
console.log(await db.put('key','value')) | ||
console.log(await db.get('key')) | ||
console.log(await db.list()) | ||
console.log(await db.delete('key')) | ||
console.log(await db.has('key')) | ||
}() | ||
</script> | ||
``` | ||
## API Reference | ||
@@ -120,3 +141,3 @@ | ||
- [x] `deno` need `--allow-read --allow-write` | ||
- [ ] `browser` | ||
- [x] `browser` | ||
- [ ] `bun` | ||
@@ -130,5 +151,3 @@ - [ ] `cloudflare-workers` | ||
``` | ||
The put() method returns a Promise that you should await on to verify a successful update which resolves with: | ||
* true = Update successful | ||
* false = Update failed | ||
The put() method returns a Promise that you should await on to verify a successful update, resolve to `true` or `false` | ||
### Read key-value pairs | ||
@@ -139,5 +158,3 @@ | ||
``` | ||
The get() method returns a promise you can await on to get the value which resolves with: | ||
* data = Get data successful | ||
* false = Get data failed | ||
The get() method returns a promise you can await on to get the value, resolve to the value or `false` | ||
@@ -159,5 +176,3 @@ ### List keys | ||
To delete a key-value pair, call the delete() method, return a promise which resolves with: | ||
* true = Delete successful | ||
* false = Delete failed | ||
To delete a key-value pair, call the delete() method, resolve to `true` or `false` | ||
@@ -170,5 +185,3 @@ ### Has key-value pairs | ||
Has key-value pairs method, return a promise which resolves with: | ||
* true = Key exist | ||
* false = Key does not exist | ||
To check for the existence of a key, resolve to `true` or `false` | ||
@@ -175,0 +188,0 @@ ## License |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
48815
21
1099
180
3
1