@koishijs/plugin-database-memory 1.1.0 → 1.3.1

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/lib/browser.js CHANGED
@@ -1 +1 @@
1
- var x=Object.defineProperty;var l=(y,t)=>x(y,"name",{value:t,configurable:!0});import{clone as p,Database as b,DriverError as v,makeArray as g,Model as m,noop as k,pick as $}from"koishi";import{executeEval as T,executeQuery as d,executeSort as S,executeUpdate as h}from"@koishijs/orm";var f=class{constructor(t,e){this.config=e;e.prefix||="koishi.database."}async start(t){for(let e in localStorage){if(!e.startsWith(this.config.prefix))break;let s=localStorage.getItem(e);if(!s)return;try{let r=JSON.parse(s);t[e.slice(this.config.prefix.length)]=r}catch{}}}async drop(t){if(t){localStorage.removeItem(this.config.prefix+t);return}for(let e in localStorage)e.startsWith(this.config.prefix)&&localStorage.removeItem(e)}async save(t,e){try{let s=JSON.stringify(e);localStorage.setItem(this.config.prefix+t,s)}catch{}}};l(f,"Storage");var u=class extends b{constructor(t,e={}){super(t);this.ctx=t;this.config=e;this.memory=this;this.#t={};e.storage&&(this.#e=new f(t,e))}#t;#e;async start(){await this.#e?.start(this.#t)}async $save(t){await this.#e?.save(t,this.#t[t])}stop(){}$table(t){return this.#t[t]||=[]}async drop(){this.#t={},await this.#e?.drop()}async stats(){return{}}$query(t,e){let s=this.resolveQuery(t,e);return this.$table(t).filter(r=>d(r,s))}async get(t,e,s){let{fields:r,limit:c=1/0,offset:i=0,sort:a={}}=this.resolveModifier(t,s);return S(this.$query(t,e),a).slice(i,i+c).map(o=>this.resolveData(t,o,r))}async set(t,e,s){s=this.resolveUpdate(t,s),this.$query(t,e).forEach(r=>h(r,s)),this.$save(t)}async remove(t,e){let s=this.resolveQuery(t,e);this.#t[t]=this.$table(t).filter(r=>!d(r,s)),this.$save(t)}async create(t,e){let s=this.$table(t),{primary:r,fields:c,autoInc:i}=this.model.config[t];if(e=this.model.format(t,p(e)),!Array.isArray(r)&&i&&!(r in e)){let o=s.length?Math.max(...s.map(n=>+n[r])):0;e[r]=o+1,m.Field.string.includes(c[r].type)&&(e[r]+="")}else if((await this.get(t,$(e,g(r)))).length)throw new v("duplicate-entry");let a=this.model.create(t,e);return s.push(a),this.$save(t),p(a)}async upsert(t,e,s){let r=g(s||this.model.config[t].primary);for(let c of e){let i=this.model.format(t,c),a=this.$table(t).find(o=>r.every(n=>o[n]===i[n]));if(a)h(a,i);else{let o=this.model.create(t);await this.create(t,h(o,i)).catch(k)}}this.$save(t)}async eval(t,e,s){let r=this.$query(t,s);return T(r,e)}};l(u,"MemoryDatabase");var N=u;export{u as MemoryDatabase,N as default};
1
+ var n=Object.defineProperty;var t=(o,e)=>n(o,"name",{value:e,configurable:!0});import{Schema as i}from"koishi";import m from"@minatojs/driver-memory";var y="MemoryDatabase",C=i.object({});function c(o,e){let r=new m(o.model,e);o.on("ready",()=>r.start()),o.on("dispose",()=>r.stop())}t(c,"apply");export{C as Config,c as apply,y as name};
package/lib/index.d.ts CHANGED
@@ -1,30 +1,6 @@
1
- /// <reference types="koishi/lib" />
2
- import { Context, Database, Tables } from 'koishi';
3
- import { Modifier, Query } from '@koishijs/orm';
4
- import { Config } from './storage';
5
- declare module 'koishi' {
6
- interface Database {
7
- memory: MemoryDatabase;
8
- }
9
- }
10
- export declare class MemoryDatabase extends Database {
11
- #private;
12
- ctx: Context;
13
- config: Config;
14
- memory: this;
15
- constructor(ctx: Context, config?: Config);
16
- start(): Promise<void>;
17
- $save(name: string): Promise<void>;
18
- stop(): void;
19
- $table<K extends keyof Tables>(table: K): any[];
20
- drop(): Promise<void>;
21
- stats(): Promise<{}>;
22
- $query(name: keyof Tables, query: Query): any[];
23
- get(name: keyof Tables, query: Query, modifier?: Modifier): Promise<any[]>;
24
- set(name: keyof Tables, query: Query, data: {}): Promise<void>;
25
- remove(name: keyof Tables, query: Query): Promise<void>;
26
- create<T extends keyof Tables>(name: T, data: any): Promise<Tables[T]>;
27
- upsert(name: keyof Tables, data: any[], key: string | string[]): Promise<void>;
28
- eval(name: keyof Tables, expr: any, query: Query): Promise<any>;
29
- }
30
- export default MemoryDatabase;
1
+ import { Context, Schema } from 'koishi';
2
+ import MemoryDriver from '@minatojs/driver-memory';
3
+ export declare const name = "MemoryDatabase";
4
+ export declare type Config = MemoryDriver.Config;
5
+ export declare const Config: Schema<Config>;
6
+ export declare function apply(ctx: Context, config: Config): void;
package/lib/node.js CHANGED
@@ -8,8 +8,8 @@ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }
8
8
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
9
  var __export = (target, all) => {
10
10
  __markAsModule(target);
11
- for (var name in all)
12
- __defProp(target, name, { get: all[name], enumerable: true });
11
+ for (var name2 in all)
12
+ __defProp(target, name2, { get: all[name2], enumerable: true });
13
13
  };
14
14
  var __reExport = (target, module2, desc) => {
15
15
  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
@@ -22,200 +22,27 @@ var __reExport = (target, module2, desc) => {
22
22
  var __toModule = (module2) => {
23
23
  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
24
24
  };
25
- var __accessCheck = (obj, member, msg) => {
26
- if (!member.has(obj))
27
- throw TypeError("Cannot " + msg);
28
- };
29
- var __privateGet = (obj, member, getter) => {
30
- __accessCheck(obj, member, "read from private field");
31
- return getter ? getter.call(obj) : member.get(obj);
32
- };
33
- var __privateAdd = (obj, member, value) => {
34
- if (member.has(obj))
35
- throw TypeError("Cannot add the same private member more than once");
36
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
37
- };
38
- var __privateSet = (obj, member, value, setter) => {
39
- __accessCheck(obj, member, "write to private field");
40
- setter ? setter.call(obj, value) : member.set(obj, value);
41
- return value;
42
- };
43
25
 
44
26
  // plugins/database/memory/src/index.ts
45
27
  __export(exports, {
46
- MemoryDatabase: () => MemoryDatabase,
47
- default: () => src_default
28
+ Config: () => Config,
29
+ apply: () => apply,
30
+ name: () => name
48
31
  });
49
32
  var import_koishi = __toModule(require("koishi"));
50
- var import_orm = __toModule(require("@koishijs/orm"));
51
-
52
- // plugins/database/memory/src/storage/node.ts
53
- var import_fs = __toModule(require("fs"));
54
- var import_path = __toModule(require("path"));
55
- var loaders = ["json", "yaml", "yml"];
56
- var Storage = class {
57
- constructor(ctx, config) {
58
- this.config = config;
59
- config.loader || (config.loader = "json");
60
- config.root || (config.root = (0, import_path.resolve)(ctx.app.baseDir, ".koishi/database"));
61
- if (!loaders.includes(config.loader)) {
62
- throw new Error(`unsupported loader "${config.loader}"`);
63
- }
64
- }
65
- async start(tables) {
66
- const { root, loader } = this.config;
67
- await import_fs.promises.mkdir(root, { recursive: true });
68
- const files = await import_fs.promises.readdir(root);
69
- await Promise.all(files.map(async (filename) => {
70
- const extension = (0, import_path.extname)(filename);
71
- if (extension !== `.${loader}`)
72
- return;
73
- const buffer = await import_fs.promises.readFile((0, import_path.resolve)(root, filename));
74
- try {
75
- const data = await this.load(buffer, loader);
76
- const name = filename.slice(0, filename.length - extension.length);
77
- tables[name] = data;
78
- } catch {
79
- }
80
- }));
81
- }
82
- async load(buffer, loader) {
83
- if (loader === "json") {
84
- return JSON.parse(buffer.toString());
85
- } else if (loader === "yaml" || loader === "yml") {
86
- const { load } = require("js-yaml");
87
- return load(buffer.toString());
88
- }
89
- }
90
- async drop(name) {
91
- const { root, loader } = this.config;
92
- if (name) {
93
- await import_fs.promises.rm((0, import_path.resolve)(root, `${name}.${loader}`));
94
- } else {
95
- await import_fs.promises.rm(root, { recursive: true, force: true });
96
- }
97
- }
98
- async save(name, table) {
99
- const { root, loader } = this.config;
100
- try {
101
- const buffer = await this.dump(table, loader);
102
- await import_fs.promises.writeFile((0, import_path.resolve)(root, `${name}.${loader}`), buffer);
103
- } catch {
104
- }
105
- }
106
- async dump(data, loader) {
107
- if (loader === "json") {
108
- return JSON.stringify(data);
109
- } else if (loader === "yaml" || loader === "yml") {
110
- const { dump } = require("js-yaml");
111
- return dump(data);
112
- }
113
- }
114
- };
115
- __name(Storage, "Storage");
116
-
117
- // plugins/database/memory/src/index.ts
118
- var _store, _loader;
119
- var MemoryDatabase = class extends import_koishi.Database {
120
- constructor(ctx, config = {}) {
121
- super(ctx);
122
- this.ctx = ctx;
123
- this.config = config;
124
- this.memory = this;
125
- __privateAdd(this, _store, {});
126
- __privateAdd(this, _loader, void 0);
127
- if (config.storage) {
128
- __privateSet(this, _loader, new Storage(ctx, config));
129
- }
130
- }
131
- async start() {
132
- var _a;
133
- await ((_a = __privateGet(this, _loader)) == null ? void 0 : _a.start(__privateGet(this, _store)));
134
- }
135
- async $save(name) {
136
- var _a;
137
- await ((_a = __privateGet(this, _loader)) == null ? void 0 : _a.save(name, __privateGet(this, _store)[name]));
138
- }
139
- stop() {
140
- }
141
- $table(table) {
142
- var _a;
143
- return (_a = __privateGet(this, _store))[table] || (_a[table] = []);
144
- }
145
- async drop() {
146
- var _a;
147
- __privateSet(this, _store, {});
148
- await ((_a = __privateGet(this, _loader)) == null ? void 0 : _a.drop());
149
- }
150
- async stats() {
151
- return {};
152
- }
153
- $query(name, query) {
154
- const expr = this.resolveQuery(name, query);
155
- return this.$table(name).filter((row) => (0, import_orm.executeQuery)(row, expr));
156
- }
157
- async get(name, query, modifier) {
158
- const { fields, limit = Infinity, offset = 0, sort = {} } = this.resolveModifier(name, modifier);
159
- return (0, import_orm.executeSort)(this.$query(name, query), sort).slice(offset, offset + limit).map((row) => this.resolveData(name, row, fields));
160
- }
161
- async set(name, query, data) {
162
- data = this.resolveUpdate(name, data);
163
- this.$query(name, query).forEach((row) => (0, import_orm.executeUpdate)(row, data));
164
- this.$save(name);
165
- }
166
- async remove(name, query) {
167
- const expr = this.resolveQuery(name, query);
168
- __privateGet(this, _store)[name] = this.$table(name).filter((row) => !(0, import_orm.executeQuery)(row, expr));
169
- this.$save(name);
170
- }
171
- async create(name, data) {
172
- const store = this.$table(name);
173
- const { primary, fields, autoInc } = this.model.config[name];
174
- data = this.model.format(name, (0, import_koishi.clone)(data));
175
- if (!Array.isArray(primary) && autoInc && !(primary in data)) {
176
- const max = store.length ? Math.max(...store.map((row) => +row[primary])) : 0;
177
- data[primary] = max + 1;
178
- if (import_koishi.Model.Field.string.includes(fields[primary].type)) {
179
- data[primary] += "";
180
- }
181
- } else {
182
- const duplicated = await this.get(name, (0, import_koishi.pick)(data, (0, import_koishi.makeArray)(primary)));
183
- if (duplicated.length) {
184
- throw new import_koishi.DriverError("duplicate-entry");
185
- }
186
- }
187
- const copy = this.model.create(name, data);
188
- store.push(copy);
189
- this.$save(name);
190
- return (0, import_koishi.clone)(copy);
191
- }
192
- async upsert(name, data, key) {
193
- const keys = (0, import_koishi.makeArray)(key || this.model.config[name].primary);
194
- for (const _item of data) {
195
- const item = this.model.format(name, _item);
196
- const row = this.$table(name).find((row2) => {
197
- return keys.every((key2) => row2[key2] === item[key2]);
198
- });
199
- if (row) {
200
- (0, import_orm.executeUpdate)(row, item);
201
- } else {
202
- const data2 = this.model.create(name);
203
- await this.create(name, (0, import_orm.executeUpdate)(data2, item)).catch(import_koishi.noop);
204
- }
205
- }
206
- this.$save(name);
207
- }
208
- async eval(name, expr, query) {
209
- const table = this.$query(name, query);
210
- return (0, import_orm.executeEval)(table, expr);
211
- }
212
- };
213
- __name(MemoryDatabase, "MemoryDatabase");
214
- _store = new WeakMap();
215
- _loader = new WeakMap();
216
- var src_default = MemoryDatabase;
33
+ var import_driver_memory = __toModule(require("@minatojs/driver-memory"));
34
+ var name = "MemoryDatabase";
35
+ var Config = import_koishi.Schema.object({});
36
+ function apply(ctx, config) {
37
+ const driver = new import_driver_memory.default(ctx.model, config);
38
+ ctx.on("ready", () => driver.start());
39
+ ctx.on("dispose", () => driver.stop());
40
+ }
41
+ __name(apply, "apply");
217
42
  // Annotate the CommonJS export names for ESM import in node:
218
43
  0 && (module.exports = {
219
- MemoryDatabase
44
+ Config,
45
+ apply,
46
+ name
220
47
  });
221
48
  //# sourceMappingURL=node.js.map
package/lib/node.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/storage/node.ts"],
4
- "sourcesContent": ["import { clone, Context, Database, Dict, DriverError, makeArray, Model, noop, pick, Tables } from 'koishi'\nimport { executeEval, executeQuery, executeSort, executeUpdate, Modifier, Query } from '@koishijs/orm'\nimport { Config, Storage } from './storage'\n\ndeclare module 'koishi' {\n interface Database {\n memory: MemoryDatabase\n }\n}\n\nexport class MemoryDatabase extends Database {\n public memory = this\n\n #store: Dict<any[]> = {}\n #loader: Storage\n\n constructor(public ctx: Context, public config: Config = {}) {\n super(ctx)\n\n if (config.storage) {\n this.#loader = new Storage(ctx, config)\n }\n }\n\n async start() {\n await this.#loader?.start(this.#store)\n }\n\n async $save(name: string) {\n await this.#loader?.save(name, this.#store[name])\n }\n\n stop() {}\n\n $table<K extends keyof Tables>(table: K) {\n return this.#store[table] ||= []\n }\n\n async drop() {\n this.#store = {}\n await this.#loader?.drop()\n }\n\n async stats() {\n return {}\n }\n\n $query(name: keyof Tables, query: Query) {\n const expr = this.resolveQuery(name, query)\n return this.$table(name).filter(row => executeQuery(row, expr))\n }\n\n async get(name: keyof Tables, query: Query, modifier?: Modifier) {\n const { fields, limit = Infinity, offset = 0, sort = {} } = this.resolveModifier(name, modifier)\n return executeSort(this.$query(name, query), sort)\n .slice(offset, offset + limit)\n .map(row => this.resolveData(name, row, fields))\n }\n\n async set(name: keyof Tables, query: Query, data: {}) {\n data = this.resolveUpdate(name, data)\n this.$query(name, query).forEach(row => executeUpdate(row, data))\n this.$save(name)\n }\n\n async remove(name: keyof Tables, query: Query) {\n const expr = this.resolveQuery(name, query)\n this.#store[name] = this.$table(name)\n .filter(row => !executeQuery(row, expr))\n this.$save(name)\n }\n\n async create<T extends keyof Tables>(name: T, data: any) {\n const store = this.$table(name)\n const { primary, fields, autoInc } = this.model.config[name]\n data = this.model.format(name, clone(data))\n if (!Array.isArray(primary) && autoInc && !(primary in data)) {\n const max = store.length ? Math.max(...store.map(row => +row[primary])) : 0\n data[primary] = max + 1\n if (Model.Field.string.includes(fields[primary].type)) {\n data[primary] += ''\n }\n } else {\n const duplicated = await this.get(name, pick(data, makeArray(primary)))\n if (duplicated.length) {\n throw new DriverError('duplicate-entry')\n }\n }\n const copy = this.model.create(name, data)\n store.push(copy)\n this.$save(name)\n return clone(copy)\n }\n\n async upsert(name: keyof Tables, data: any[], key: string | string[]) {\n const keys = makeArray(key || this.model.config[name].primary)\n for (const _item of data) {\n const item = this.model.format(name, _item)\n const row = this.$table(name).find(row => {\n return keys.every(key => row[key] === item[key])\n })\n if (row) {\n executeUpdate(row, item)\n } else {\n const data = this.model.create(name)\n await this.create(name, executeUpdate(data, item)).catch(noop)\n }\n }\n this.$save(name)\n }\n\n async eval(name: keyof Tables, expr: any, query: Query) {\n const table = this.$query(name, query)\n return executeEval(table, expr)\n }\n}\n\nexport default MemoryDatabase\n", "import type * as yaml from 'js-yaml'\nimport { Context } from 'koishi'\nimport { promises as fs } from 'fs'\nimport { extname, resolve } from 'path'\n\ntype Loader = 'json' | 'yaml' | 'yml'\nconst loaders = ['json', 'yaml', 'yml']\n\nexport interface Config {\n loader?: Loader\n root?: string\n}\n\nexport class Storage {\n constructor(ctx: Context, private config: Config) {\n config.loader ||= 'json'\n config.root ||= resolve(ctx.app.baseDir, '.koishi/database')\n if (!loaders.includes(config.loader)) {\n throw new Error(`unsupported loader \"${config.loader}\"`)\n }\n }\n\n async start(tables: Record<string, any[]>) {\n const { root, loader } = this.config\n await fs.mkdir(root, { recursive: true })\n const files = await fs.readdir(root)\n await Promise.all(files.map(async (filename) => {\n const extension = extname(filename)\n if (extension !== `.${loader}`) return\n const buffer = await fs.readFile(resolve(root, filename))\n try {\n const data = await this.load(buffer, loader)\n const name = filename.slice(0, filename.length - extension.length)\n tables[name] = data\n } catch {}\n }))\n }\n\n async load(buffer: Buffer, loader: Loader) {\n if (loader === 'json') {\n return JSON.parse(buffer.toString())\n } else if (loader === 'yaml' || loader === 'yml') {\n const { load } = require('js-yaml') as typeof yaml\n return load(buffer.toString())\n }\n }\n\n async drop(name?: string) {\n const { root, loader } = this.config\n if (name) {\n await fs.rm(resolve(root, `${name}.${loader}`))\n } else {\n await fs.rm(root, { recursive: true, force: true })\n }\n }\n\n async save(name: string, table: any[]) {\n const { root, loader } = this.config\n try {\n const buffer = await this.dump(table, loader)\n await fs.writeFile(resolve(root, `${name}.${loader}`), buffer)\n } catch {}\n }\n\n async dump(data: any, loader: Loader) {\n if (loader === 'json') {\n return JSON.stringify(data)\n } else if (loader === 'yaml' || loader === 'yml') {\n const { dump } = require('js-yaml') as typeof yaml\n return dump(data)\n }\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["import { Context, Schema } from 'koishi'\nimport MemoryDriver from '@minatojs/driver-memory'\n\nexport const name = 'MemoryDatabase'\n\nexport type Config = MemoryDriver.Config\n\nexport const Config: Schema<Config> = Schema.object({})\n\nexport function apply(ctx: Context, config: Config) {\n const driver = new MemoryDriver(ctx.model, config)\n ctx.on('ready', () => driver.start())\n ctx.on('dispose', () => driver.stop())\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAgC;AAChC,2BAAyB;AAElB,IAAM,OAAO;AAIb,IAAM,SAAyB,qBAAO,OAAO;AAE7C,eAAe,KAAc,QAAgB;AAClD,QAAM,SAAS,IAAI,6BAAa,IAAI,OAAO;AAC3C,MAAI,GAAG,SAAS,MAAM,OAAO;AAC7B,MAAI,GAAG,WAAW,MAAM,OAAO;AAAA;AAHjB;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@koishijs/plugin-database-memory",
3
3
  "description": "A in-memory database implementation for Koishi",
4
- "version": "1.1.0",
4
+ "version": "1.3.1",
5
5
  "main": "lib/node.js",
6
6
  "module": "lib/browser.js",
7
7
  "typings": "lib/index.d.ts",
@@ -12,12 +12,13 @@
12
12
  "license": "MIT",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/koishijs/koishi.git"
15
+ "url": "git+https://github.com/koishijs/koishi.git",
16
+ "directory": "plugins/database/memory"
16
17
  },
17
18
  "bugs": {
18
19
  "url": "https://github.com/koishijs/koishi/issues"
19
20
  },
20
- "homepage": "https://koishi.js.org/plugins/other/database",
21
+ "homepage": "https://koishi.js.org/plugins/database/memory.html",
21
22
  "keywords": [
22
23
  "bot",
23
24
  "chatbot",
@@ -25,18 +26,23 @@
25
26
  "plugin",
26
27
  "database",
27
28
  "server",
28
- "impl:database"
29
+ "memory"
29
30
  ],
30
- "peerDependencies": {
31
- "koishi": "^4.5.0"
31
+ "koishi": {
32
+ "description": {
33
+ "en": "In-memory database support",
34
+ "zh": "基于内存的数据库支持"
35
+ },
36
+ "service": {
37
+ "implements": [
38
+ "database"
39
+ ]
40
+ }
32
41
  },
33
- "devDependencies": {
34
- "@koishijs/database-tests": "^1.0.0",
35
- "@koishijs/plugin-mock": "^1.0.3",
36
- "@types/js-yaml": "^4.0.5",
37
- "js-yaml": "^4.1.0"
42
+ "peerDependencies": {
43
+ "koishi": "^4.7.2"
38
44
  },
39
45
  "dependencies": {
40
- "@koishijs/orm": "^1.0.0"
46
+ "@minatojs/driver-memory": "^1.0.3"
41
47
  }
42
48
  }