inibase 1.0.0-rc.98 → 1.1.0

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/dist/index.d.ts CHANGED
@@ -12,8 +12,9 @@ export type Field = {
12
12
  type: FieldType | FieldType[];
13
13
  required?: boolean;
14
14
  table?: string;
15
- unique?: boolean;
15
+ unique?: boolean | number | string;
16
16
  children?: FieldType | FieldType[] | Schema;
17
+ regex?: string;
17
18
  };
18
19
  export type Schema = Field[];
19
20
  export interface Options {
@@ -49,18 +50,20 @@ declare global {
49
50
  entries<T extends object>(o: T): Entries<T>;
50
51
  }
51
52
  }
52
- export type ErrorCodes = "FIELD_UNIQUE" | "FIELD_REQUIRED" | "NO_SCHEMA" | "NO_ITEMS" | "INVALID_ID" | "INVALID_TYPE" | "INVALID_PARAMETERS" | "NO_ENV" | "TABLE_EXISTS" | "TABLE_NOT_EXISTS";
53
+ export type ErrorCodes = "FIELD_UNIQUE" | "FIELD_REQUIRED" | "NO_SCHEMA" | "TABLE_EMPTY" | "INVALID_ID" | "INVALID_TYPE" | "INVALID_PARAMETERS" | "NO_ENV" | "TABLE_EXISTS" | "TABLE_NOT_EXISTS" | "INVALID_REGEX_MATCH";
53
54
  export type ErrorLang = "en";
54
55
  export default class Inibase {
55
56
  pageInfo: Record<string, pageInfo>;
56
57
  salt: Buffer;
57
58
  private databasePath;
58
- private tables;
59
59
  private fileExtension;
60
- private checkIFunique;
60
+ private tablesMap;
61
+ private uniqueMap;
61
62
  private totalItems;
62
63
  constructor(database: string, mainFolder?: string);
63
- private Error;
64
+ private static errorMessages;
65
+ createError(name: ErrorCodes, variable?: string | number | (string | number)[], language?: ErrorLang): Error;
66
+ clear(): void;
64
67
  private getFileExtension;
65
68
  private _schemaToIdsPath;
66
69
  /**
@@ -72,7 +75,6 @@ export default class Inibase {
72
75
  */
73
76
  createTable(tableName: string, schema?: Schema, config?: Config): Promise<void>;
74
77
  private replaceStringInFile;
75
- private replaceStringInSchemas;
76
78
  /**
77
79
  * Update table schema or config
78
80
  *
@@ -89,9 +91,10 @@ export default class Inibase {
89
91
  * @param {string} tableName
90
92
  * @return {*} {Promise<TableObject>}
91
93
  */
92
- getTable(tableName: string): Promise<TableObject>;
94
+ getTable(tableName: string, encodeIDs?: boolean): Promise<TableObject>;
93
95
  getTableSchema(tableName: string, encodeIDs?: boolean): Promise<Schema | undefined>;
94
96
  private throwErrorIfTableEmpty;
97
+ private _validateData;
95
98
  private validateData;
96
99
  private cleanObject;
97
100
  private formatField;
@@ -101,8 +104,17 @@ export default class Inibase {
101
104
  private _combineObjectsToArray;
102
105
  private _CombineData;
103
106
  private joinPathesContents;
104
- private _getItemsFromSchemaHelper;
105
- private getItemsFromSchema;
107
+ private _processSchemaDataHelper;
108
+ private processSchemaData;
109
+ private isSimpleField;
110
+ private processSimpleField;
111
+ private isArrayField;
112
+ private processArrayField;
113
+ private isObjectField;
114
+ private processObjectField;
115
+ private isTableField;
116
+ private processTableField;
117
+ private _setNestedKey;
106
118
  private applyCriteria;
107
119
  private _filterSchemaByColumns;
108
120
  /**
@@ -121,36 +133,37 @@ export default class Inibase {
121
133
  * @param {boolean} [onlyLinesNumbers]
122
134
  * @return {*} {(Promise<Data | number | (Data | number)[] | null>)}
123
135
  */
124
- get(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: true, onlyLinesNumbers?: false): Promise<Data | null>;
125
- get(tableName: string, where: string | number, options?: Options, onlyOne?: boolean, onlyLinesNumbers?: false): Promise<Data | null>;
126
- get(tableName: string, where?: string | number | (string | number)[] | Criteria, options?: Options, onlyOne?: boolean, onlyLinesNumbers?: false): Promise<Data[] | null>;
127
- get(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: false | undefined, onlyLinesNumbers: true): Promise<number[] | null>;
128
- get(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: true, onlyLinesNumbers: true): Promise<number | null>;
136
+ get<TData extends Record<string, any> & Partial<Data>>(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: true, onlyLinesNumbers?: false): Promise<(Data & TData) | null>;
137
+ get<TData extends Record<string, any> & Partial<Data>>(tableName: string, where: string | number, options?: Options, onlyOne?: boolean, onlyLinesNumbers?: false): Promise<(Data & TData) | null>;
138
+ get<TData extends Record<string, any> & Partial<Data>>(tableName: string, where?: string | number | (string | number)[] | Criteria, options?: Options, onlyOne?: boolean, onlyLinesNumbers?: false): Promise<(Data & TData)[] | null>;
139
+ get<TData extends Record<string, any> & Partial<Data>>(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: false | undefined, onlyLinesNumbers: true): Promise<number[] | null>;
140
+ get<TData extends Record<string, any> & Partial<Data>>(tableName: string, where: string | number | (string | number)[] | Criteria | undefined, options: Options | undefined, onlyOne: true, onlyLinesNumbers: true): Promise<number | null>;
129
141
  /**
130
142
  * Create new item(s) in a table
131
143
  *
132
144
  * @param {string} tableName
133
- * @param {(Data | Data[])} data Can be array of objects or a single object
145
+ * @param {((Data & TData) | (Data & TData)[])} data Can be array of objects or a single object
134
146
  * @param {Options} [options] Pagination options, useful when the returnPostedData param is true
135
147
  * @param {boolean} [returnPostedData] By default function returns void, if you want to get the posted data, set this param to true
136
148
  * @return {*} {Promise<Data | Data[] | null | void>}
137
149
  */
138
- post(tableName: string, data: Data | Data[], options?: Options, returnPostedData?: boolean): Promise<void>;
139
- post(tableName: string, data: Data, options: Options | undefined, returnPostedData: true): Promise<Data | null>;
140
- post(tableName: string, data: Data[], options: Options | undefined, returnPostedData: true): Promise<Data[] | null>;
150
+ post<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: (Data & TData) | (Data & TData)[], options?: Options, returnPostedData?: boolean): Promise<void>;
151
+ post<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: Data & TData, options: Options | undefined, returnPostedData: true): Promise<(Data & TData) | null>;
152
+ post<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: (Data & TData)[], options: Options | undefined, returnPostedData: true): Promise<(Data & TData)[] | null>;
141
153
  /**
142
154
  * Update item(s) in a table
143
155
  *
144
156
  * @param {string} tableName
145
- * @param {(Data | Data[])} data
157
+ * @param {(Data & TData) | (Data & TData[])} data
146
158
  * @param {(number | string | (number | string)[] | Criteria)} [where]
147
159
  * @param {Options} [options]
148
- * @param {false} [returnUpdatedData]
160
+ * @param {boolean} [returnUpdatedData]
149
161
  * @return {*} {Promise<Data | Data[] | null | undefined | void>}
150
162
  */
151
- put(tableName: string, data: Data | Data[], where?: number | string | (number | string)[] | Criteria, options?: Options, returnUpdatedData?: false): Promise<void>;
152
- put(tableName: string, data: Data, where: number | string | (number | string)[] | Criteria | undefined, options: Options | undefined, returnUpdatedData: true): Promise<Data | null>;
153
- put(tableName: string, data: Data[], where: number | string | (number | string)[] | Criteria | undefined, options: Options | undefined, returnUpdatedData: true): Promise<Data[] | null>;
163
+ put<TData extends Record<string, any> & Partial<Data>>(tableName: string, data?: (Data & TData) | (Data & TData)[], where?: number | string | (number | string)[] | Criteria | undefined, options?: Options | undefined, returnUpdatedData?: false): Promise<void>;
164
+ put<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: Data & TData, where: number | string | (number | string)[] | Criteria | undefined, options: Options | undefined, returnUpdatedData: true | boolean): Promise<(Data & TData) | null>;
165
+ put<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: (Data & TData)[], where: number | string | (number | string)[] | Criteria | undefined, options: Options | undefined, returnUpdatedData: true | boolean): Promise<(Data & TData)[] | null>;
166
+ put<TData extends Record<string, any> & Partial<Data>>(tableName: string, data: (Data & TData) | (Data & TData)[], where: number | string | (number | string)[] | Criteria | undefined, options: Options | undefined, returnUpdatedData: true | boolean): Promise<(Data & TData) | (Data & TData)[] | null>;
154
167
  /**
155
168
  * Delete item(s) in a table
156
169
  *