inibase 1.0.0-rc.22 → 1.0.0-rc.24

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/README.md CHANGED
@@ -8,13 +8,14 @@
8
8
 
9
9
  ## Features
10
10
 
11
- - **Lightweight** 🪶 (~80kb)
11
+ - **Lightweight** 🪶
12
12
  - **Minimalist** :white_circle:
13
13
  - **TypeScript** :large_blue_diamond:
14
- - **Super-Fast** :turtle:
14
+ - **Super-Fast** :zap:
15
+ - **Form-validation** included :sunglasses:
15
16
  - **Suitable for large data** :page_with_curl:
16
17
  - **Safe** :lock:
17
- - **Easy to use** :hourglass:
18
+ - **Easy to use** :bread:
18
19
  - **...** and much more :rocket:
19
20
 
20
21
  ## Usage
@@ -48,16 +49,27 @@ If you like Inibase, please sponsor: [GitHub Sponsors](https://github.com/sponso
48
49
 
49
50
  ## How it works?
50
51
 
51
- To semplify the idea, each database has tables, each table has columns, each column will be stored in a seperated file. When POSTing new data, it will be appended to each columns file as new line. When GETing data, the file will be readed line-by-line so it can handle large data (without consuming a lot of resources)
52
+ To simplify the idea, each database has tables, each table has columns, each column will be stored in a seperated file. When POSTing new data, it will be appended to the end of each file as new line. When GETing data, the file will be readed line-by-line so it can handle large data (without consuming a lot of resources), when PUTing(updating) in a specific column, only one file will be opened and updated
52
53
 
53
54
  ## Benchmark
54
55
 
55
- | | 10 | 100 | 1000 |
56
- |--------|-------|-------|-------|
57
- | POST | 23 ms | 20 ms | 83 ms |
58
- | GET | 12 ms | 16 ms | 45 ms |
59
- | PUT | 6 ms | 4 ms | 11 ms |
60
- | DELETE | 18 ms | 21 ms | 27 ms |
56
+ ### Bulk
57
+
58
+ | | 10 | 100 | 1000 |
59
+ |--------|-----------------|-----------------|-----------------|
60
+ | POST | 11 ms (0.65 mb) | 19 ms (1.00 mb) | 85 ms (4.58 mb) |
61
+ | GET | 14 ms (2.77 mb) | 12 ms (3.16 mb) | 34 ms (1.38 mb) |
62
+ | PUT | 6 ms (1.11 mb) | 5 ms (1.37 mb) | 10 ms (1.12 mb) |
63
+ | DELETE | 17 ms (1.68 mb) | 14 ms (5.45 mb) | 25 ms (5.94 mb) |
64
+
65
+ ### Single
66
+
67
+ | | 10 | 100 | 1000 |
68
+ |--------|-------------------|--------------------|--------------------|
69
+ | POST | 43 ms (4.70 mb) | 387 ms (6.36 mb) | 5341 ms (24.73 mb) |
70
+ | GET | 99 ms (12.51 mb) | 846 ms (30.68 mb) | 7103 ms (30.86 mb) |
71
+ | PUT | 33 ms (10.29 mb) | 312 ms (11.06 mb) | 3539 ms (14.87 mb) |
72
+ | DELETE | 134 ms (13.50 mb) | 1224 ms (16.57 mb) | 7339 ms (11.46 mb) |
61
73
 
62
74
  ## Examples
63
75
 
package/dist/file.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { ComparisonOperator, FieldType } from "./index.js";
3
3
  export declare const isExists: (path: string) => Promise<boolean>;
4
- export declare const encode: (input: string | number | boolean | null | (string | number | boolean | null)[], secretKey?: string | Buffer) => string | number | boolean;
4
+ export declare const encode: (input: string | number | boolean | null | (string | number | boolean | null)[], secretKey?: string | Buffer) => string | number | boolean | null;
5
5
  export declare const decode: (input: string | null | number, fieldType?: FieldType | FieldType[], fieldChildrenType?: FieldType | FieldType[], secretKey?: string | Buffer) => string | number | boolean | null | (string | number | null | boolean)[];
6
6
  export declare const get: (filePath: string, lineNumbers?: number | number[], fieldType?: FieldType | FieldType[], fieldChildrenType?: FieldType | FieldType[], secretKey?: string | Buffer) => Promise<[
7
- Record<number, string | number | boolean | (string | number | boolean | (string | number | boolean)[])[]> | null,
7
+ Record<number, string | number | boolean | null | (string | number | boolean | (string | number | boolean)[] | null)[]> | null,
8
8
  number
9
9
  ]>;
10
10
  export declare const replace: (filePath: string, replacements: string | number | boolean | null | (string | number | boolean | null)[] | Record<number, string | boolean | number | null | (string | boolean | number | null)[]> | Map<number, string | number | boolean | (string | number | boolean)[]>) => Promise<void>;
@@ -20,16 +20,16 @@ export declare const max: (filePath: string, lineNumbers?: number | number[]) =>
20
20
  export declare const min: (filePath: string, lineNumbers?: number | number[]) => Promise<number>;
21
21
  export declare const sort: (filePath: string, sortDirection: 1 | -1 | "asc" | "desc", lineNumbers?: number | number[], _lineNumbersPerChunk?: number) => Promise<void>;
22
22
  export default class File {
23
- static get: (filePath: string, lineNumbers?: number | number[], fieldType?: FieldType | FieldType[], fieldChildrenType?: FieldType | FieldType[], secretKey?: string | Buffer) => Promise<[Record<number, string | number | boolean | (string | number | boolean | (string | number | boolean)[])[]>, number]>;
23
+ static get: (filePath: string, lineNumbers?: number | number[] | undefined, fieldType?: FieldType | FieldType[] | undefined, fieldChildrenType?: FieldType | FieldType[] | undefined, secretKey?: string | Buffer | undefined) => Promise<[Record<number, string | number | boolean | (string | number | boolean | (string | number | boolean)[] | null)[] | null> | null, number]>;
24
24
  static remove: (filePath: string, linesToDelete: number | number[]) => Promise<void>;
25
- static search: (filePath: string, operator: ComparisonOperator | ComparisonOperator[], comparedAtValue: string | number | boolean | (string | number | boolean)[], logicalOperator?: "and" | "or", fieldType?: FieldType | FieldType[], fieldChildrenType?: FieldType | FieldType[], limit?: number, offset?: number, readWholeFile?: boolean, secretKey?: string | Buffer) => Promise<[Record<number, string | number | boolean | (string | number | boolean)[]>, number]>;
26
- static replace: (filePath: string, replacements: string | number | boolean | (string | number | boolean)[] | Record<number, string | number | boolean | (string | number | boolean)[]> | Map<number, string | number | boolean | (string | number | boolean)[]>) => Promise<void>;
25
+ static search: (filePath: string, operator: ComparisonOperator | ComparisonOperator[], comparedAtValue: string | number | boolean | (string | number | boolean | null)[] | null, logicalOperator?: "and" | "or" | undefined, fieldType?: FieldType | FieldType[] | undefined, fieldChildrenType?: FieldType | FieldType[] | undefined, limit?: number | undefined, offset?: number | undefined, readWholeFile?: boolean | undefined, secretKey?: string | Buffer | undefined) => Promise<[Record<number, string | number | boolean | (string | number | boolean | null)[] | null> | null, number]>;
26
+ static replace: (filePath: string, replacements: string | number | boolean | (string | number | boolean | null)[] | Record<number, string | number | boolean | (string | number | boolean | null)[] | null> | Map<number, string | number | boolean | (string | number | boolean)[]> | null) => Promise<void>;
27
27
  static count: (filePath: string) => Promise<number>;
28
- static encode: (input: string | number | boolean | (string | number | boolean)[], secretKey?: string | Buffer) => string | number | boolean;
29
- static decode: (input: string | number, fieldType?: FieldType | FieldType[], fieldChildrenType?: FieldType | FieldType[], secretKey?: string | Buffer) => string | number | boolean | (string | number | boolean)[];
28
+ static encode: (input: string | number | boolean | (string | number | boolean | null)[] | null, secretKey?: string | Buffer | undefined) => string | number | boolean | null;
29
+ static decode: (input: string | number | null, fieldType?: FieldType | FieldType[] | undefined, fieldChildrenType?: FieldType | FieldType[] | undefined, secretKey?: string | Buffer | undefined) => string | number | boolean | (string | number | boolean | null)[] | null;
30
30
  static isExists: (path: string) => Promise<boolean>;
31
- static sum: (filePath: string, lineNumbers?: number | number[]) => Promise<number>;
32
- static min: (filePath: string, lineNumbers?: number | number[]) => Promise<number>;
33
- static max: (filePath: string, lineNumbers?: number | number[]) => Promise<number>;
31
+ static sum: (filePath: string, lineNumbers?: number | number[] | undefined) => Promise<number>;
32
+ static min: (filePath: string, lineNumbers?: number | number[] | undefined) => Promise<number>;
33
+ static max: (filePath: string, lineNumbers?: number | number[] | undefined) => Promise<number>;
34
34
  static append: (filePath: string, data: string | number | (string | number)[], startsAt?: number) => Promise<void>;
35
35
  }