@worker-tools/deno-kv-storage
Version:
An implementation of the StorageArea (1,2,3) interface for Deno with an extensible system for supporting various database backends.
108 lines • 5.51 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _DenoStorageArea_store;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StorageArea = exports.DenoStorageArea = void 0;
// deno-lint-ignore-file no-explicit-any
require("./_dnt.polyfills.js");
const dntShim = __importStar(require("./_dnt.shims.js"));
const idb_key_to_string_1 = require("idb-key-to-string");
const Structured = __importStar(require("@worker-tools/structured-json"));
const OLD_DEFAULT_URL_KEY = 'DENO_STORAGE_AREA__DEFAULT_URL';
const DEFAULT_URL_KEY = 'DEFAULT_KV_URL';
const DEFAULT_STORAGE_AREA_NAME = 'default';
class DenoStorageArea {
constructor(name = DEFAULT_STORAGE_AREA_NAME, options = {}) {
_DenoStorageArea_store.set(this, void 0);
const dbURL = options.url
|| DenoStorageArea.defaultURL
|| Reflect.get(self, DEFAULT_URL_KEY)
|| Reflect.get(self, OLD_DEFAULT_URL_KEY)
|| Deno.env.get(DEFAULT_URL_KEY)
|| Deno.env.get(OLD_DEFAULT_URL_KEY)
|| 'sqlite://';
const { protocol } = new URL(dbURL);
const adapters = dntShim.dntGlobalThis.deno_storage_area__adapters || new Map();
const AdapterCtor = adapters.get(protocol);
if (!AdapterCtor) {
throw Error(`Adapter for database protocol '${protocol}' not registered. Try importing 'adapters/${protocol.replace(':', '')}.ts'`);
}
__classPrivateFieldSet(this, _DenoStorageArea_store, new AdapterCtor({ area: name, url: dbURL }), "f");
}
async get(key) {
(0, idb_key_to_string_1.throwForDisallowedKey)(key);
const s = await __classPrivateFieldGet(this, _DenoStorageArea_store, "f").get((0, idb_key_to_string_1.encodeKey)(key));
return s && Structured.parse(s);
}
async set(key, value) {
(0, idb_key_to_string_1.throwForDisallowedKey)(key);
if (value === undefined) {
await __classPrivateFieldGet(this, _DenoStorageArea_store, "f").delete((0, idb_key_to_string_1.encodeKey)(key));
}
else {
await __classPrivateFieldGet(this, _DenoStorageArea_store, "f").set((0, idb_key_to_string_1.encodeKey)(key), Structured.stringify(value));
}
}
async delete(key) {
(0, idb_key_to_string_1.throwForDisallowedKey)(key);
await __classPrivateFieldGet(this, _DenoStorageArea_store, "f").delete((0, idb_key_to_string_1.encodeKey)(key));
}
async clear() {
await __classPrivateFieldGet(this, _DenoStorageArea_store, "f").clear();
}
async *keys() {
for await (const key of __classPrivateFieldGet(this, _DenoStorageArea_store, "f").keys()) {
yield (0, idb_key_to_string_1.decodeKey)(key);
}
}
async *values() {
for await (const value of __classPrivateFieldGet(this, _DenoStorageArea_store, "f").values()) {
yield Structured.parse(value);
}
}
async *entries() {
for await (const [key, value] of __classPrivateFieldGet(this, _DenoStorageArea_store, "f").entries()) {
yield [(0, idb_key_to_string_1.decodeKey)(key), Structured.parse(value)];
}
}
backingStore() {
return __classPrivateFieldGet(this, _DenoStorageArea_store, "f").backingStore();
}
}
exports.DenoStorageArea = DenoStorageArea;
exports.StorageArea = DenoStorageArea;
_DenoStorageArea_store = new WeakMap();
//# sourceMappingURL=mod.js.map
;