klauz-db 0.5.2 → 1.0.5
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 +363 -615
- package/dist/index.cjs +395 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +84 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.mjs +354 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +27 -26
- package/lib/Collection.d.ts +0 -15
- package/lib/Collection.js +0 -242
- package/lib/Collection.js.map +0 -1
- package/lib/Error.d.ts +0 -3
- package/lib/Error.js +0 -18
- package/lib/Error.js.map +0 -1
- package/lib/Klauz.d.ts +0 -7
- package/lib/Klauz.js +0 -29
- package/lib/Klauz.js.map +0 -1
- package/lib/Types.d.ts +0 -41
- package/lib/Types.js +0 -3
- package/lib/Types.js.map +0 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -18
- package/lib/index.js.map +0 -1
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
// src/collection.ts
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
|
|
4
|
+
// src/errors/error-message.ts
|
|
5
|
+
import { ZodError } from "zod";
|
|
6
|
+
|
|
7
|
+
// src/errors/klauz-error.ts
|
|
8
|
+
var KlauzError = class extends Error {
|
|
9
|
+
constructor(message, code = "KLAUZ_ERROR", options) {
|
|
10
|
+
super(message, options);
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.name = "KlauzError";
|
|
13
|
+
}
|
|
14
|
+
code;
|
|
15
|
+
};
|
|
16
|
+
var KlauzValidationError = class extends KlauzError {
|
|
17
|
+
constructor(message, options) {
|
|
18
|
+
super(message, "KLAUZ_VALIDATION_ERROR", options);
|
|
19
|
+
this.name = "KlauzValidationError";
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var KlauzStorageError = class extends KlauzError {
|
|
23
|
+
constructor(message, options) {
|
|
24
|
+
super(message, "KLAUZ_STORAGE_ERROR", options);
|
|
25
|
+
this.name = "KlauzStorageError";
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var KlauzNotFoundError = class extends KlauzError {
|
|
29
|
+
constructor(message, options) {
|
|
30
|
+
super(message, "KLAUZ_NOT_FOUND", options);
|
|
31
|
+
this.name = "KlauzNotFoundError";
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// src/errors/error-message.ts
|
|
36
|
+
function errorMessage(err) {
|
|
37
|
+
if (err instanceof ZodError) {
|
|
38
|
+
const error = err.errors.at(-1);
|
|
39
|
+
return {
|
|
40
|
+
error: error?.message ?? "Invalid params",
|
|
41
|
+
code: "KLAUZ_VALIDATION_ERROR"
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (err instanceof KlauzError || err instanceof KlauzValidationError) {
|
|
45
|
+
return {
|
|
46
|
+
error: err.message,
|
|
47
|
+
code: err.code
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (err instanceof Error) {
|
|
51
|
+
return {
|
|
52
|
+
error: err.message,
|
|
53
|
+
code: "KLAUZ_ERROR"
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
error: "Unknown error",
|
|
58
|
+
code: "KLAUZ_ERROR"
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/schemas/collection-schemas.ts
|
|
63
|
+
import z from "zod";
|
|
64
|
+
var collectionNamePattern = /^[a-zA-Z0-9_-]+$/;
|
|
65
|
+
function parseSchema(schema, data) {
|
|
66
|
+
const result = schema.safeParse(data);
|
|
67
|
+
if (!result.success) {
|
|
68
|
+
const error = result.error.errors.at(-1);
|
|
69
|
+
throw new KlauzValidationError(error?.message ?? "Invalid params", {
|
|
70
|
+
cause: result.error
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return result.data;
|
|
74
|
+
}
|
|
75
|
+
var klauzPropsSchema = z.object({
|
|
76
|
+
path: z.string().trim().min(1)
|
|
77
|
+
}).strict();
|
|
78
|
+
var collectionNameSchema = z.string().trim().min(1).regex(collectionNamePattern, "Collection name must contain only letters, numbers, hyphens and underscores");
|
|
79
|
+
var collectionDataSchema = z.record(
|
|
80
|
+
z.string(),
|
|
81
|
+
z.unknown(),
|
|
82
|
+
{ message: `Content must be a object. Use 'addMany' method, to insert a new array` }
|
|
83
|
+
);
|
|
84
|
+
var collectionDataArraySchema = z.array(collectionDataSchema);
|
|
85
|
+
var findAllOptionsSchema = z.object({
|
|
86
|
+
hideInfo: z.array(z.string().min(1)).optional()
|
|
87
|
+
}).strict().optional();
|
|
88
|
+
var findOptionsSchema = z.object({
|
|
89
|
+
where: z.function(),
|
|
90
|
+
hideInfo: z.array(z.string().min(1)).optional()
|
|
91
|
+
}).strict();
|
|
92
|
+
var updateOptionsSchema = z.object({
|
|
93
|
+
where: z.function(),
|
|
94
|
+
values: collectionDataSchema
|
|
95
|
+
}).strict();
|
|
96
|
+
var deleteOptionsSchema = z.object({
|
|
97
|
+
where: z.function()
|
|
98
|
+
}).strict();
|
|
99
|
+
|
|
100
|
+
// src/storage/json-storage.ts
|
|
101
|
+
import { access, mkdir, readFile, unlink, writeFile } from "fs/promises";
|
|
102
|
+
import { dirname } from "path";
|
|
103
|
+
var JsonStorage = class {
|
|
104
|
+
constructor(filePath) {
|
|
105
|
+
this.filePath = filePath;
|
|
106
|
+
}
|
|
107
|
+
filePath;
|
|
108
|
+
async exists() {
|
|
109
|
+
try {
|
|
110
|
+
await access(this.filePath);
|
|
111
|
+
return true;
|
|
112
|
+
} catch {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async read() {
|
|
117
|
+
const content = await readFile(this.filePath, {
|
|
118
|
+
encoding: "utf-8"
|
|
119
|
+
});
|
|
120
|
+
return JSON.parse(content);
|
|
121
|
+
}
|
|
122
|
+
async write(data) {
|
|
123
|
+
await mkdir(dirname(this.filePath), {
|
|
124
|
+
recursive: true
|
|
125
|
+
});
|
|
126
|
+
await writeFile(this.filePath, JSON.stringify(data, null, 2));
|
|
127
|
+
}
|
|
128
|
+
async delete() {
|
|
129
|
+
await unlink(this.filePath);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// src/collection.ts
|
|
134
|
+
var Collection = class {
|
|
135
|
+
constructor(props) {
|
|
136
|
+
this.props = props;
|
|
137
|
+
const fileExtension = ".json";
|
|
138
|
+
const { path, name } = props;
|
|
139
|
+
this.#name = name;
|
|
140
|
+
this.#path = join(path, `.${name}${fileExtension}`);
|
|
141
|
+
this.#storage = new JsonStorage(this.#path);
|
|
142
|
+
}
|
|
143
|
+
props;
|
|
144
|
+
#name;
|
|
145
|
+
#path;
|
|
146
|
+
#storage;
|
|
147
|
+
#content = {};
|
|
148
|
+
async init() {
|
|
149
|
+
await this.#load();
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
async #load() {
|
|
153
|
+
if (!await this.#storage.exists()) {
|
|
154
|
+
const content = {
|
|
155
|
+
collection_name: this.#name,
|
|
156
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
157
|
+
updated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
158
|
+
data: []
|
|
159
|
+
};
|
|
160
|
+
this.#content = content;
|
|
161
|
+
await this.#save(this.#content);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const content = await this.#storage.read();
|
|
166
|
+
this.#content = this.#normalizeContent(content);
|
|
167
|
+
} catch (err) {
|
|
168
|
+
throw new KlauzStorageError("Invalid collection JSON file", { cause: err });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
#normalizeContent(content) {
|
|
172
|
+
const updatedAt = content.updated_at ?? content.last_interaction ?? content.created_at;
|
|
173
|
+
return {
|
|
174
|
+
collection_name: content.collection_name,
|
|
175
|
+
created_at: content.created_at,
|
|
176
|
+
updated_at: updatedAt,
|
|
177
|
+
data: content.data
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async #save(content) {
|
|
181
|
+
await this.#storage.write(content);
|
|
182
|
+
}
|
|
183
|
+
async #setCollectionDataValue(data) {
|
|
184
|
+
this.#content.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
185
|
+
this.#content.data.push(data);
|
|
186
|
+
await this.#save(this.#content);
|
|
187
|
+
}
|
|
188
|
+
async #setCollectionData(data) {
|
|
189
|
+
this.#content.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
190
|
+
this.#content.data = data;
|
|
191
|
+
await this.#save(this.#content);
|
|
192
|
+
}
|
|
193
|
+
async #getCollectionData() {
|
|
194
|
+
await this.#load();
|
|
195
|
+
return this.#content.data;
|
|
196
|
+
}
|
|
197
|
+
#getLastNumericId(data = this.#content.data) {
|
|
198
|
+
const lastObject = data.findLast((obj) => typeof obj._zid === "number");
|
|
199
|
+
return lastObject?._zid ?? 0;
|
|
200
|
+
}
|
|
201
|
+
#removeInternalFields(data) {
|
|
202
|
+
const safeData = { ...data };
|
|
203
|
+
Reflect.deleteProperty(safeData, "_zid");
|
|
204
|
+
return safeData;
|
|
205
|
+
}
|
|
206
|
+
#cloneData(data) {
|
|
207
|
+
return data.map((obj) => ({ ...obj }));
|
|
208
|
+
}
|
|
209
|
+
#hideInfo(data, hideInfo) {
|
|
210
|
+
const output = this.#cloneData(data);
|
|
211
|
+
if (!hideInfo || hideInfo.length === 0) return output;
|
|
212
|
+
for (const obj of output) {
|
|
213
|
+
for (const info of hideInfo) {
|
|
214
|
+
Reflect.deleteProperty(obj, info);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return output;
|
|
218
|
+
}
|
|
219
|
+
get information() {
|
|
220
|
+
return this.#getInformation();
|
|
221
|
+
}
|
|
222
|
+
async #getInformation() {
|
|
223
|
+
await this.#load();
|
|
224
|
+
return {
|
|
225
|
+
collection_name: this.#content.collection_name,
|
|
226
|
+
created_at: this.#content.created_at,
|
|
227
|
+
updated_at: this.#content.updated_at
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
async add(data) {
|
|
231
|
+
try {
|
|
232
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
233
|
+
await this.#load();
|
|
234
|
+
const obj = this.#removeInternalFields(parseSchema(collectionDataSchema, data));
|
|
235
|
+
const lastId = this.#getLastNumericId();
|
|
236
|
+
Reflect.set(obj, "_zid", lastId + 1);
|
|
237
|
+
await this.#setCollectionDataValue(obj);
|
|
238
|
+
return { ...obj };
|
|
239
|
+
} catch (err) {
|
|
240
|
+
return errorMessage(err);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async addMany(data) {
|
|
244
|
+
try {
|
|
245
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
246
|
+
await this.#load();
|
|
247
|
+
const objs = parseSchema(collectionDataArraySchema, data).map((obj) => this.#removeInternalFields(obj));
|
|
248
|
+
let lastId = this.#getLastNumericId();
|
|
249
|
+
for (const obj of objs) {
|
|
250
|
+
Reflect.set(obj, "_zid", ++lastId);
|
|
251
|
+
}
|
|
252
|
+
await this.#setCollectionData([
|
|
253
|
+
...this.#content.data,
|
|
254
|
+
...objs
|
|
255
|
+
]);
|
|
256
|
+
return this.#cloneData(objs);
|
|
257
|
+
} catch (err) {
|
|
258
|
+
return errorMessage(err);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async findAll(options) {
|
|
262
|
+
try {
|
|
263
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
264
|
+
const collectionData = await this.#getCollectionData();
|
|
265
|
+
const zOpts = parseSchema(findAllOptionsSchema, options);
|
|
266
|
+
return this.#hideInfo(collectionData, zOpts?.hideInfo);
|
|
267
|
+
} catch (err) {
|
|
268
|
+
return errorMessage(err);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
async find(options) {
|
|
272
|
+
try {
|
|
273
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
274
|
+
const { where, ...opts } = parseSchema(findOptionsSchema, options);
|
|
275
|
+
const collectionData = await this.#getCollectionData();
|
|
276
|
+
const output = collectionData.filter((obj) => where.call(void 0, obj));
|
|
277
|
+
return this.#hideInfo(output, opts.hideInfo);
|
|
278
|
+
} catch (err) {
|
|
279
|
+
return errorMessage(err);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async update(options) {
|
|
283
|
+
try {
|
|
284
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
285
|
+
const { where, values } = parseSchema(updateOptionsSchema, options);
|
|
286
|
+
const safeValues = this.#removeInternalFields(values ?? {});
|
|
287
|
+
const collectionData = await this.#getCollectionData();
|
|
288
|
+
const output = [];
|
|
289
|
+
for (const obj of collectionData) {
|
|
290
|
+
if (where.call(void 0, obj)) {
|
|
291
|
+
Object.assign(obj, {
|
|
292
|
+
...obj,
|
|
293
|
+
...safeValues,
|
|
294
|
+
_zid: obj._zid
|
|
295
|
+
});
|
|
296
|
+
output.push({ ...obj });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (output.length === 0) throw Error("Data not found");
|
|
300
|
+
await this.#setCollectionData(collectionData);
|
|
301
|
+
return output;
|
|
302
|
+
} catch (err) {
|
|
303
|
+
return errorMessage(err);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async delete(options) {
|
|
307
|
+
try {
|
|
308
|
+
if (arguments.length > 1) throw Error("Invalid params");
|
|
309
|
+
const { where } = parseSchema(deleteOptionsSchema, options);
|
|
310
|
+
const collectionData = await this.#getCollectionData();
|
|
311
|
+
const dataPostDelete = collectionData.filter((obj) => !where(obj));
|
|
312
|
+
if (collectionData.length === dataPostDelete.length) return;
|
|
313
|
+
await this.#setCollectionData(dataPostDelete);
|
|
314
|
+
} catch (err) {
|
|
315
|
+
return errorMessage(err);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
async reset() {
|
|
319
|
+
try {
|
|
320
|
+
await this.#load();
|
|
321
|
+
await this.#setCollectionData([]);
|
|
322
|
+
} catch (err) {
|
|
323
|
+
return errorMessage(err);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
async drop() {
|
|
327
|
+
await this.#storage.delete();
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
// src/klauz-db.ts
|
|
332
|
+
var KlauzDB = class {
|
|
333
|
+
path = "";
|
|
334
|
+
constructor(props) {
|
|
335
|
+
const { path } = parseSchema(klauzPropsSchema, props);
|
|
336
|
+
this.path = path;
|
|
337
|
+
}
|
|
338
|
+
async createCollection(collectionName) {
|
|
339
|
+
const name = parseSchema(collectionNameSchema, collectionName);
|
|
340
|
+
const collection = new Collection({
|
|
341
|
+
name,
|
|
342
|
+
path: this.path
|
|
343
|
+
});
|
|
344
|
+
return collection.init();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
export {
|
|
348
|
+
KlauzDB,
|
|
349
|
+
KlauzError,
|
|
350
|
+
KlauzNotFoundError,
|
|
351
|
+
KlauzStorageError,
|
|
352
|
+
KlauzValidationError
|
|
353
|
+
};
|
|
354
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/collection.ts","../src/errors/error-message.ts","../src/errors/klauz-error.ts","../src/schemas/collection-schemas.ts","../src/storage/json-storage.ts","../src/klauz-db.ts"],"sourcesContent":["import { join } from \"node:path\";\r\nimport { errorMessage } from \"./errors/error-message\";\r\nimport { KlauzStorageError } from \"./errors/klauz-error\";\r\nimport {\r\n collectionDataArraySchema,\r\n collectionDataSchema,\r\n deleteOptionsSchema,\r\n findAllOptionsSchema,\r\n findOptionsSchema,\r\n parseSchema,\r\n updateOptionsSchema\r\n} from \"./schemas/collection-schemas\";\r\nimport { JsonStorage } from \"./storage/json-storage\";\r\nimport {\r\n CollectionContent,\n CollectionData,\n CollectionDataWithZID,\n CollectionProps,\n DeleteOptions,\n FindOptions,\n FindOptionsWithoutWhere,\n KzObject,\n LegacyCollectionContent,\n Output,\n UpdateOptions,\n ZID\n} from \"./types\";\r\n\r\nexport class Collection {\r\n readonly #name: string\r\n readonly #path: string\r\n readonly #storage: JsonStorage\r\n #content = {} as CollectionContent\r\n\r\n constructor(private readonly props: CollectionProps) {\r\n const fileExtension = '.json'\r\n const { path, name } = props\r\n this.#name = name\r\n this.#path = join(path, `.${name}${fileExtension}`)\r\n this.#storage = new JsonStorage(this.#path)\r\n }\r\n\r\n async init(): Promise<this> {\r\n await this.#load()\r\n return this\r\n }\r\n\r\n async #load(): Promise<void> {\r\n if (!await this.#storage.exists()) {\r\n const content: CollectionContent = {\r\n collection_name: this.#name,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString(),\n data: []\n }\n this.#content = content\r\n await this.#save(this.#content)\r\n return\r\n }\n\n try {\n const content = await this.#storage.read<LegacyCollectionContent>()\n this.#content = this.#normalizeContent(content)\n } catch (err) {\n throw new KlauzStorageError('Invalid collection JSON file', { cause: err })\n }\n }\n\n #normalizeContent(content: LegacyCollectionContent): CollectionContent {\n const updatedAt = content.updated_at ?? content.last_interaction ?? content.created_at\n\n return {\n collection_name: content.collection_name,\n created_at: content.created_at,\n updated_at: updatedAt,\n data: content.data\n }\n }\n\r\n async #save(content: CollectionContent): Promise<void> {\r\n await this.#storage.write(content)\r\n }\r\n\r\n async #setCollectionDataValue(data: CollectionDataWithZID): Promise<void> {\n this.#content.updated_at = new Date().toISOString()\n this.#content.data.push(data)\n await this.#save(this.#content)\n }\n\n async #setCollectionData(data: CollectionDataWithZID[]): Promise<void> {\n this.#content.updated_at = new Date().toISOString()\n this.#content.data = data\n await this.#save(this.#content)\n }\r\n\r\n async #getCollectionData(): Promise<CollectionDataWithZID[]> {\r\n await this.#load()\r\n return this.#content.data\r\n }\r\n\r\n #getLastNumericId(data = this.#content.data): ZID {\r\n const lastObject = data.findLast((obj: CollectionDataWithZID) => typeof obj._zid === 'number')\r\n return lastObject?._zid ?? 0\r\n }\r\n\r\n #removeInternalFields(data: CollectionData): CollectionData {\r\n const safeData = { ...data }\r\n Reflect.deleteProperty(safeData, '_zid')\r\n return safeData\r\n }\r\n\r\n #cloneData(data: CollectionDataWithZID[]): CollectionDataWithZID[] {\r\n return data.map((obj) => ({ ...obj }))\r\n }\r\n\r\n #hideInfo(data: CollectionDataWithZID[], hideInfo?: string[]): CollectionDataWithZID[] {\r\n const output = this.#cloneData(data)\r\n\r\n if (!hideInfo || hideInfo.length === 0) return output\r\n\r\n for (const obj of output) {\r\n for (const info of hideInfo) {\r\n Reflect.deleteProperty(obj, info)\r\n }\r\n }\r\n\r\n return output\r\n }\r\n\r\n get information(): Promise<Omit<CollectionContent, 'data'>> {\r\n return this.#getInformation()\r\n }\r\n\r\n async #getInformation(): Promise<Omit<CollectionContent, 'data'>> {\r\n await this.#load()\r\n return {\r\n collection_name: this.#content.collection_name,\n created_at: this.#content.created_at,\n updated_at: this.#content.updated_at,\n }\n }\n\r\n async add(data: CollectionData): Promise<Output<CollectionDataWithZID>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n await this.#load()\r\n const obj = this.#removeInternalFields(parseSchema(collectionDataSchema, data)) as CollectionDataWithZID\r\n const lastId = this.#getLastNumericId()\r\n Reflect.set(obj, '_zid', lastId + 1)\r\n await this.#setCollectionDataValue(obj)\r\n return { ...obj }\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async addMany(data: CollectionData[]): Promise<Output<CollectionDataWithZID[]>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n await this.#load()\r\n const objs = parseSchema(collectionDataArraySchema, data).map((obj) => this.#removeInternalFields(obj)) as CollectionDataWithZID[]\r\n let lastId = this.#getLastNumericId()\r\n\r\n for (const obj of objs) {\r\n Reflect.set(obj, '_zid', ++lastId)\r\n }\r\n\r\n await this.#setCollectionData([\r\n ...this.#content.data,\r\n ...objs\r\n ])\r\n\r\n return this.#cloneData(objs)\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async findAll(options?: FindOptionsWithoutWhere): Promise<Output<CollectionDataWithZID[]>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n const collectionData = await this.#getCollectionData()\r\n const zOpts = parseSchema(findAllOptionsSchema, options) as FindOptionsWithoutWhere\r\n return this.#hideInfo(collectionData, zOpts?.hideInfo)\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async find<T>(options: FindOptions<KzObject<T>>): Promise<Output<CollectionDataWithZID[]>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n const { where, ...opts } = parseSchema(findOptionsSchema, options) as FindOptions<T>\r\n const collectionData = await this.#getCollectionData() as any\r\n const output = collectionData.filter((obj: KzObject<T>) => where.call(undefined, obj)) as CollectionDataWithZID[]\r\n return this.#hideInfo(output, opts.hideInfo)\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async update<T>(options: UpdateOptions<KzObject<T>>): Promise<Output<CollectionDataWithZID[]>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n const { where, values } = parseSchema(updateOptionsSchema, options) as UpdateOptions<T>\r\n const safeValues = this.#removeInternalFields(values ?? {})\r\n const collectionData = await this.#getCollectionData() as any\r\n const output = [] as CollectionDataWithZID[]\r\n for (const obj of collectionData) {\r\n if (where.call(undefined, obj)) {\r\n Object.assign(obj, {\r\n ...obj,\r\n ...safeValues,\r\n _zid: obj._zid\r\n })\r\n output.push({ ...obj })\r\n }\r\n }\r\n if (output.length === 0) throw Error('Data not found')\r\n await this.#setCollectionData(collectionData)\r\n return output\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async delete<T>(options: DeleteOptions<KzObject<T>>): Promise<Output<void>> {\r\n try {\r\n if (arguments.length > 1) throw Error('Invalid params')\r\n const { where } = parseSchema(deleteOptionsSchema, options) as DeleteOptions<T>\r\n const collectionData = await this.#getCollectionData() as any\r\n const dataPostDelete = collectionData.filter((obj: KzObject<T>) => !where(obj)) as CollectionDataWithZID[]\r\n if (collectionData.length === dataPostDelete.length) return\r\n await this.#setCollectionData(dataPostDelete)\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async reset(): Promise<Output<void>> {\r\n try {\r\n await this.#load()\r\n await this.#setCollectionData([])\r\n } catch (err) {\r\n return errorMessage(err)\r\n }\r\n }\r\n\r\n async drop(): Promise<void> {\r\n await this.#storage.delete()\r\n }\r\n}\r\n","import { ZodError } from \"zod\"\nimport { KlauzError, KlauzValidationError } from \"./klauz-error\"\n\nexport function errorMessage(err: unknown) {\n if (err instanceof ZodError) {\n const error = err.errors.at(-1)\n return {\n error: error?.message ?? 'Invalid params',\n code: 'KLAUZ_VALIDATION_ERROR'\n }\n }\n\n if (err instanceof KlauzError || err instanceof KlauzValidationError) {\n return {\n error: err.message,\n code: err.code\n }\n }\n\n if (err instanceof Error) {\n return {\n error: err.message,\n code: 'KLAUZ_ERROR'\n }\n }\n\n return {\n error: 'Unknown error',\n code: 'KLAUZ_ERROR'\n }\n}\n","export type KlauzErrorCode =\n | 'KLAUZ_ERROR'\n | 'KLAUZ_VALIDATION_ERROR'\n | 'KLAUZ_STORAGE_ERROR'\n | 'KLAUZ_NOT_FOUND'\n\nexport class KlauzError extends Error {\n constructor(\n message: string,\n public readonly code: KlauzErrorCode = 'KLAUZ_ERROR',\n options?: ErrorOptions\n ) {\n super(message, options)\n this.name = 'KlauzError'\n }\n}\n\nexport class KlauzValidationError extends KlauzError {\n constructor(message: string, options?: ErrorOptions) {\n super(message, 'KLAUZ_VALIDATION_ERROR', options)\n this.name = 'KlauzValidationError'\n }\n}\n\nexport class KlauzStorageError extends KlauzError {\n constructor(message: string, options?: ErrorOptions) {\n super(message, 'KLAUZ_STORAGE_ERROR', options)\n this.name = 'KlauzStorageError'\n }\n}\n\nexport class KlauzNotFoundError extends KlauzError {\n constructor(message: string, options?: ErrorOptions) {\n super(message, 'KLAUZ_NOT_FOUND', options)\n this.name = 'KlauzNotFoundError'\n }\n}\n","import z from 'zod'\nimport { KlauzValidationError } from '../errors/klauz-error'\n\nconst collectionNamePattern = /^[a-zA-Z0-9_-]+$/\n\nexport function parseSchema<TSchema extends z.ZodTypeAny>(schema: TSchema, data: unknown): z.infer<TSchema> {\n const result = schema.safeParse(data)\n\n if (!result.success) {\n const error = result.error.errors.at(-1)\n throw new KlauzValidationError(error?.message ?? 'Invalid params', {\n cause: result.error\n })\n }\n\n return result.data\n}\n\nexport const klauzPropsSchema = z.object({\n path: z.string().trim().min(1)\n}).strict()\n\nexport const collectionNameSchema = z\n .string()\n .trim()\n .min(1)\n .regex(collectionNamePattern, 'Collection name must contain only letters, numbers, hyphens and underscores')\n\nexport const collectionDataSchema = z.record(\n z.string(),\n z.unknown(),\n { message: `Content must be a object. Use 'addMany' method, to insert a new array` }\n)\n\nexport const collectionDataArraySchema = z.array(collectionDataSchema)\n\nexport const findAllOptionsSchema = z.object({\n hideInfo: z.array(z.string().min(1)).optional()\n}).strict().optional()\n\nexport const findOptionsSchema = z.object({\n where: z.function(),\n hideInfo: z.array(z.string().min(1)).optional()\n}).strict()\n\nexport const updateOptionsSchema = z.object({\n where: z.function(),\n values: collectionDataSchema\n}).strict()\n\nexport const deleteOptionsSchema = z.object({\n where: z.function()\n}).strict()\n","import { access, mkdir, readFile, unlink, writeFile } from 'node:fs/promises'\nimport { dirname } from 'node:path'\n\nexport class JsonStorage {\n constructor(private readonly filePath: string) {}\n\n async exists(): Promise<boolean> {\n try {\n await access(this.filePath)\n return true\n } catch {\n return false\n }\n }\n\n async read<T>(): Promise<T> {\n const content = await readFile(this.filePath, {\n encoding: 'utf-8'\n })\n\n return JSON.parse(content) as T\n }\n\n async write<T>(data: T): Promise<void> {\n await mkdir(dirname(this.filePath), {\n recursive: true\n })\n\n await writeFile(this.filePath, JSON.stringify(data, null, 2))\n }\n\n async delete(): Promise<void> {\n await unlink(this.filePath)\n }\n}\n","import { Collection } from \"./collection\";\nimport { collectionNameSchema, klauzPropsSchema, parseSchema } from \"./schemas/collection-schemas\";\nimport { KlauzProps } from \"./types\";\n\nexport class KlauzDB {\n public path: string = ''\n \n constructor(props: KlauzProps) {\n const { path } = parseSchema(klauzPropsSchema, props)\n this.path = path\n }\n\n async createCollection(collectionName: string): Promise<Collection> {\n const name = parseSchema(collectionNameSchema, collectionName)\n const collection = new Collection({\n name,\n path: this.path\n })\n return collection.init()\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "klauz-db",
|
|
3
|
-
"version": "0.5
|
|
4
|
-
"description": "Um banco de dados simples, para
|
|
5
|
-
"main": "
|
|
6
|
-
"
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"description": "Um banco de dados simples, para aplicacoes com um grau menor de complexidade",
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
7
15
|
"scripts": {
|
|
8
|
-
"dev": "tsx watch --env-file .env src/
|
|
9
|
-
"build": "
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
16
|
+
"dev": "tsx watch --env-file .env src/index.ts",
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"typecheck": "tsc --noEmit",
|
|
19
|
+
"lint": "eslint src",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"prepublishOnly": "npm run lint && npm run typecheck && npm run test && npm run build"
|
|
13
23
|
},
|
|
14
24
|
"repository": {
|
|
15
25
|
"type": "git",
|
|
@@ -21,27 +31,18 @@
|
|
|
21
31
|
"url": "https://github.com/vnikolaus/KlauzDB/issues"
|
|
22
32
|
},
|
|
23
33
|
"homepage": "https://github.com/vnikolaus/KlauzDB#readme",
|
|
24
|
-
"jest": {
|
|
25
|
-
"preset": "ts-jest",
|
|
26
|
-
"testEnvironment": "node",
|
|
27
|
-
"setupFiles": [
|
|
28
|
-
"dotenv/config"
|
|
29
|
-
],
|
|
30
|
-
"coveragePathIgnorePatterns": [
|
|
31
|
-
"/node_modules/",
|
|
32
|
-
"lib"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
34
|
"files": [
|
|
36
|
-
"
|
|
35
|
+
"dist/**/*"
|
|
37
36
|
],
|
|
38
37
|
"devDependencies": {
|
|
39
|
-
"@types/
|
|
40
|
-
"@
|
|
41
|
-
"
|
|
42
|
-
"
|
|
38
|
+
"@types/node": "^20.14.11",
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "^8.59.4",
|
|
40
|
+
"@typescript-eslint/parser": "^8.59.4",
|
|
41
|
+
"eslint": "^10.4.0",
|
|
42
|
+
"tsup": "^8.5.1",
|
|
43
43
|
"tsx": "4.16.2",
|
|
44
|
-
"typescript": "5.5.3"
|
|
44
|
+
"typescript": "5.5.3",
|
|
45
|
+
"vitest": "^4.1.7"
|
|
45
46
|
},
|
|
46
47
|
"dependencies": {
|
|
47
48
|
"dotenv": "^16.4.5",
|
package/lib/Collection.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { CollectionContent, CollectionData, CollectionDataWithZID, CollectionProps, DeleteOptions, FindOptions, FindOptionsWithoutWhere, KzObject, Output, UpdateOptions } from "./Types";
|
|
2
|
-
export declare class Collection {
|
|
3
|
-
#private;
|
|
4
|
-
private readonly props;
|
|
5
|
-
constructor(props: CollectionProps);
|
|
6
|
-
get information(): Omit<CollectionContent, 'data'>;
|
|
7
|
-
add(data: CollectionData): Output<CollectionDataWithZID>;
|
|
8
|
-
addMany(data: CollectionData[]): Output<CollectionDataWithZID[]>;
|
|
9
|
-
findAll(options?: FindOptionsWithoutWhere): Output<CollectionDataWithZID[]>;
|
|
10
|
-
find<T>(options: FindOptions<KzObject<T>>): Output<CollectionDataWithZID[]>;
|
|
11
|
-
update<T>(options: UpdateOptions<KzObject<T>>): Output<CollectionDataWithZID[]>;
|
|
12
|
-
delete<T>(options: DeleteOptions<KzObject<T>>): Output<void>;
|
|
13
|
-
reset(): Output<void>;
|
|
14
|
-
drop(): void;
|
|
15
|
-
}
|