@jsonkit/db 1.0.0 → 2.0.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.
@@ -0,0 +1,13 @@
1
+ import { JsonEntryParser, Promisable, SingleEntryDb } from '../types';
2
+ import { Files } from './files';
3
+ export declare class SingleEntryFileDb<T> extends SingleEntryDb<T> {
4
+ protected readonly filepath: string;
5
+ protected readonly parser: JsonEntryParser<T>;
6
+ protected readonly files: Files;
7
+ constructor(filepath: string, parser?: JsonEntryParser<T>);
8
+ path(): string;
9
+ isInited(): Promise<boolean>;
10
+ read(): Promise<T>;
11
+ write(updaterOrEntry: T | ((entry: T) => Promisable<Partial<T>>)): Promise<T>;
12
+ delete(): Promise<void>;
13
+ }
@@ -1,3 +1,5 @@
1
- export * from './multiEntryFileDb';
2
- export * from './singleEntryFileDb';
1
+ export * from './file/multiEntryFileDb';
2
+ export * from './file/singleEntryFileDb';
3
+ export * from './memory/multiEntryMemDb';
4
+ export * from './memory/singleEntryMemDb';
3
5
  export * from './types';
@@ -0,0 +1,19 @@
1
+ import { Identifiable, DeleteManyOutput, Promisable, PredicateFn, MultiEntryDb } from '../types';
2
+ export declare class MultiEntryMemDb<T extends Identifiable> extends MultiEntryDb<T> {
3
+ protected entries: Map<T['id'], T>;
4
+ create(entry: T): Promise<T>;
5
+ getById(id: T['id']): Promise<T | null>;
6
+ getByIdOrThrow(id: T['id']): Promise<T>;
7
+ getWhere(predicate: PredicateFn<T>, max?: number): Promise<T[]>;
8
+ getAll(whereIds?: T['id'][]): Promise<T[]>;
9
+ getAllIds(): Promise<T['id'][]>;
10
+ update(id: T['id'], updater: (entry: T) => Promisable<Partial<T>>): Promise<T>;
11
+ delete(id: T['id']): Promise<boolean>;
12
+ deleteByIds(ids: T['id'][]): Promise<DeleteManyOutput>;
13
+ deleteWhere(predicate: PredicateFn<T>): Promise<DeleteManyOutput>;
14
+ destroy(): Promise<void>;
15
+ exists(id: T['id']): Promise<boolean>;
16
+ countAll(): Promise<number>;
17
+ countWhere(predicate: PredicateFn<T>): Promise<number>;
18
+ protected iterEntries(): AsyncGenerator<T, void, unknown>;
19
+ }
@@ -0,0 +1,9 @@
1
+ import { Promisable, SingleEntryDb } from '../types';
2
+ export declare class SingleEntryMemDb<T> extends SingleEntryDb<T> {
3
+ protected entry: T | null;
4
+ constructor(initialEntry?: T | null);
5
+ isInited(): Promise<boolean>;
6
+ read(): Promise<T & {}>;
7
+ write(updaterOrEntry: T | ((entry: T) => Promisable<Partial<T>>)): Promise<T>;
8
+ delete(): Promise<void>;
9
+ }
@@ -8,6 +8,13 @@ export type DeleteManyOutput = {
8
8
  ignoredIds: Id[];
9
9
  };
10
10
  export type PredicateFn<T extends Identifiable> = (entry: T) => boolean;
11
+ export type JsonEntryParser<T> = {
12
+ parse: (text: string) => T;
13
+ };
14
+ export type MultiEntryFileDbOptions<T> = {
15
+ noPathlikeIds?: boolean;
16
+ parser?: JsonEntryParser<T>;
17
+ };
11
18
  export type FileMeta = {
12
19
  path: string;
13
20
  size: number;
@@ -24,3 +31,25 @@ export declare enum FileType {
24
31
  File = "file",
25
32
  Directory = "directory"
26
33
  }
34
+ export declare abstract class SingleEntryDb<T> {
35
+ abstract isInited(): Promise<boolean>;
36
+ abstract read(): Promise<T>;
37
+ abstract write(updaterOrEntry: T | ((entry: T) => Promisable<Partial<T>>)): Promise<T>;
38
+ abstract delete(): Promise<void>;
39
+ }
40
+ export declare abstract class MultiEntryDb<T extends Identifiable> {
41
+ abstract create(entry: T): Promise<T>;
42
+ abstract getById(id: T['id']): Promise<T | null>;
43
+ abstract getByIdOrThrow(id: T['id']): Promise<T>;
44
+ abstract getWhere(predicate: PredicateFn<T>, max?: number): Promise<T[]>;
45
+ abstract getAll(whereIds?: T['id'][]): Promise<T[]>;
46
+ abstract getAllIds(): Promise<T['id'][]>;
47
+ abstract update(id: T['id'], updater: (entry: T) => Promisable<Partial<T>>): Promise<T>;
48
+ abstract delete(id: T['id']): Promise<boolean>;
49
+ abstract deleteByIds(ids: T['id'][]): Promise<DeleteManyOutput>;
50
+ abstract deleteWhere(predicate: PredicateFn<T>): Promise<DeleteManyOutput>;
51
+ abstract destroy(): Promise<void>;
52
+ abstract exists(id: T['id']): Promise<boolean>;
53
+ abstract countAll(): Promise<number>;
54
+ abstract countWhere(predicate: PredicateFn<T>): Promise<number>;
55
+ }
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@jsonkit/db",
3
- "version": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Simple database using JSON and your local filesystem",
5
5
  "license": "MIT",
6
6
  "author": "taennan <taennan.dev@protonmail.com>",
7
- "repository": "https://github.com/taennan/jsonkit",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/taennan/jsonkit.git"
10
+ },
8
11
  "keywords": [
9
12
  "typescript",
10
13
  "json",
@@ -38,8 +41,5 @@
38
41
  },
39
42
  "files": [
40
43
  "dist"
41
- ],
42
- "dependencies": {
43
- "@jsonkit/tools": "file:///Users/taennanrickman/Programming/Projects/@jsonkit/tools"
44
- }
44
+ ]
45
45
  }
@@ -1,14 +0,0 @@
1
- import type { Promisable } from './types';
2
- import { FilesService } from './files';
3
- import { JsonParser } from '@jsonkit/tools';
4
- export declare class SingleEntryFileDb<T> {
5
- protected readonly filepath: string;
6
- protected readonly parser: JsonParser;
7
- protected readonly files: FilesService;
8
- constructor(filepath: string, parser: JsonParser);
9
- path(): string;
10
- isInited(): Promise<boolean>;
11
- read(): Promise<T>;
12
- write(updaterOrEntry: T | ((entry: T) => Promisable<Partial<T>>)): Promise<T>;
13
- delete(): Promise<void>;
14
- }