protoobject 1.1.30 → 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.
Files changed (103) hide show
  1. package/README.md +142 -2
  2. package/lib/browser.d.ts +17 -0
  3. package/lib/cjs/browser.js +26 -0
  4. package/lib/cjs/browser.js.map +1 -0
  5. package/lib/cjs/classes/proto-object-crypto.js +133 -0
  6. package/lib/cjs/classes/proto-object-crypto.js.map +1 -0
  7. package/lib/cjs/classes/proto-object-fs.js +395 -0
  8. package/lib/cjs/classes/proto-object-fs.js.map +1 -0
  9. package/lib/cjs/classes/proto-object-sqlite.js +331 -0
  10. package/lib/cjs/classes/proto-object-sqlite.js.map +1 -0
  11. package/lib/cjs/classes/proto-object-stream.js +148 -0
  12. package/lib/cjs/classes/proto-object-stream.js.map +1 -0
  13. package/lib/cjs/classes/proto-object-tcp.js +322 -0
  14. package/lib/cjs/classes/proto-object-tcp.js.map +1 -0
  15. package/lib/cjs/classes/proto-object.js.map +1 -0
  16. package/lib/cjs/decorators/static-implements.js.map +1 -0
  17. package/lib/cjs/index.js +41 -0
  18. package/lib/cjs/index.js.map +1 -0
  19. package/lib/cjs/package.json +1 -0
  20. package/lib/{types → cjs/types}/any-object.js.map +1 -1
  21. package/lib/cjs/types/browser-storage.js +3 -0
  22. package/lib/cjs/types/browser-storage.js.map +1 -0
  23. package/lib/cjs/types/collection-transformer.js.map +1 -0
  24. package/lib/cjs/types/dynamic-methods.js.map +1 -0
  25. package/lib/cjs/types/record-transformer.js.map +1 -0
  26. package/lib/cjs/types/static-methods.js.map +1 -0
  27. package/lib/cjs/types/unknown-object.js.map +1 -0
  28. package/lib/cjs/types/validator-function.js.map +1 -0
  29. package/lib/cjs/utils/protoobject-browser-storage.js +642 -0
  30. package/lib/cjs/utils/protoobject-browser-storage.js.map +1 -0
  31. package/lib/cjs/utils/protoobject-factory.js.map +1 -0
  32. package/lib/classes/proto-object-crypto.d.ts +98 -0
  33. package/lib/classes/proto-object-fs.d.ts +106 -0
  34. package/lib/classes/proto-object-sqlite.d.ts +97 -0
  35. package/lib/classes/proto-object-stream.d.ts +37 -0
  36. package/lib/classes/proto-object-tcp.d.ts +85 -0
  37. package/lib/esm/browser.js +19 -0
  38. package/lib/esm/browser.js.map +1 -0
  39. package/lib/esm/classes/proto-object-crypto.js +129 -0
  40. package/lib/esm/classes/proto-object-crypto.js.map +1 -0
  41. package/lib/esm/classes/proto-object-fs.js +391 -0
  42. package/lib/esm/classes/proto-object-fs.js.map +1 -0
  43. package/lib/esm/classes/proto-object-sqlite.js +328 -0
  44. package/lib/esm/classes/proto-object-sqlite.js.map +1 -0
  45. package/lib/esm/classes/proto-object-stream.js +144 -0
  46. package/lib/esm/classes/proto-object-stream.js.map +1 -0
  47. package/lib/esm/classes/proto-object-tcp.js +317 -0
  48. package/lib/esm/classes/proto-object-tcp.js.map +1 -0
  49. package/lib/esm/classes/proto-object.js +264 -0
  50. package/lib/esm/classes/proto-object.js.map +1 -0
  51. package/lib/esm/decorators/static-implements.js +12 -0
  52. package/lib/esm/decorators/static-implements.js.map +1 -0
  53. package/lib/esm/index.js +22 -0
  54. package/lib/esm/index.js.map +1 -0
  55. package/lib/esm/package.json +1 -0
  56. package/lib/esm/types/any-object.js +2 -0
  57. package/lib/esm/types/any-object.js.map +1 -0
  58. package/lib/esm/types/browser-storage.js +2 -0
  59. package/lib/esm/types/browser-storage.js.map +1 -0
  60. package/lib/esm/types/collection-transformer.js +3 -0
  61. package/lib/esm/types/collection-transformer.js.map +1 -0
  62. package/lib/esm/types/dynamic-methods.js +3 -0
  63. package/lib/esm/types/dynamic-methods.js.map +1 -0
  64. package/lib/esm/types/record-transformer.js +3 -0
  65. package/lib/esm/types/record-transformer.js.map +1 -0
  66. package/lib/esm/types/static-methods.js +4 -0
  67. package/lib/esm/types/static-methods.js.map +1 -0
  68. package/lib/esm/types/unknown-object.js +2 -0
  69. package/lib/esm/types/unknown-object.js.map +1 -0
  70. package/lib/esm/types/validator-function.js +3 -0
  71. package/lib/esm/types/validator-function.js.map +1 -0
  72. package/lib/esm/utils/protoobject-browser-storage.js +638 -0
  73. package/lib/esm/utils/protoobject-browser-storage.js.map +1 -0
  74. package/lib/esm/utils/protoobject-factory.js +32 -0
  75. package/lib/esm/utils/protoobject-factory.js.map +1 -0
  76. package/lib/index.d.ts +18 -9
  77. package/lib/types/browser-storage.d.ts +41 -0
  78. package/lib/utils/protoobject-browser-storage.d.ts +83 -0
  79. package/package.json +56 -4
  80. package/CHANGELOG.md +0 -191
  81. package/FUNDING.yml +0 -2
  82. package/ignoreUpdatesModules.json +0 -4
  83. package/lib/classes/proto-object.js.map +0 -1
  84. package/lib/decorators/static-implements.js.map +0 -1
  85. package/lib/index.js +0 -18
  86. package/lib/index.js.map +0 -1
  87. package/lib/types/collection-transformer.js.map +0 -1
  88. package/lib/types/dynamic-methods.js.map +0 -1
  89. package/lib/types/record-transformer.js.map +0 -1
  90. package/lib/types/static-methods.js.map +0 -1
  91. package/lib/types/unknown-object.js.map +0 -1
  92. package/lib/types/validator-function.js.map +0 -1
  93. package/lib/utils/protoobject-factory.js.map +0 -1
  94. /package/lib/{classes → cjs/classes}/proto-object.js +0 -0
  95. /package/lib/{decorators → cjs/decorators}/static-implements.js +0 -0
  96. /package/lib/{types → cjs/types}/any-object.js +0 -0
  97. /package/lib/{types → cjs/types}/collection-transformer.js +0 -0
  98. /package/lib/{types → cjs/types}/dynamic-methods.js +0 -0
  99. /package/lib/{types → cjs/types}/record-transformer.js +0 -0
  100. /package/lib/{types → cjs/types}/static-methods.js +0 -0
  101. /package/lib/{types → cjs/types}/unknown-object.js +0 -0
  102. /package/lib/{types → cjs/types}/validator-function.js +0 -0
  103. /package/lib/{utils → cjs/utils}/protoobject-factory.js +0 -0
@@ -0,0 +1,391 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
36
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
37
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
38
+ };
39
+ import { promises as fs, createReadStream, createWriteStream, watch, } from "node:fs";
40
+ import { join, dirname, extname } from "node:path";
41
+ import { EventEmitter } from "node:events";
42
+ import { ProtoObject } from "./proto-object.js";
43
+ import { StaticImplements } from "../decorators/static-implements.js";
44
+ /* eslint-disable no-unused-vars */
45
+ /**
46
+ * File operation types
47
+ */
48
+ export var FileOperationType;
49
+ (function (FileOperationType) {
50
+ FileOperationType["SAVE"] = "SAVE";
51
+ FileOperationType["LOAD"] = "LOAD";
52
+ FileOperationType["DELETE"] = "DELETE";
53
+ FileOperationType["WATCH"] = "WATCH";
54
+ })(FileOperationType || (FileOperationType = {}));
55
+ /**
56
+ * File formats supported
57
+ */
58
+ export var FileFormat;
59
+ (function (FileFormat) {
60
+ FileFormat["JSON"] = ".json";
61
+ FileFormat["CSV"] = ".csv";
62
+ FileFormat["TEXT"] = ".txt";
63
+ })(FileFormat || (FileFormat = {}));
64
+ /* eslint-enable no-unused-vars */
65
+ /**
66
+ * File system watcher for ProtoObject files
67
+ */
68
+ export class ProtoObjectFileWatcher extends EventEmitter {
69
+ constructor() {
70
+ super(...arguments);
71
+ this.watchers = new Map();
72
+ }
73
+ /**
74
+ * Watch a file for changes
75
+ */
76
+ watchFile(filePath) {
77
+ if (this.watchers.has(filePath)) {
78
+ return; // Already watching
79
+ }
80
+ const watcher = watch(filePath, (eventType, filename) => {
81
+ this.emit("fileChanged", {
82
+ filePath,
83
+ eventType,
84
+ filename,
85
+ timestamp: new Date(),
86
+ });
87
+ });
88
+ this.watchers.set(filePath, watcher);
89
+ }
90
+ /**
91
+ * Stop watching a file
92
+ */
93
+ unwatchFile(filePath) {
94
+ const watcher = this.watchers.get(filePath);
95
+ if (watcher) {
96
+ watcher.close();
97
+ this.watchers.delete(filePath);
98
+ }
99
+ }
100
+ /**
101
+ * Stop watching all files
102
+ */
103
+ unwatchAll() {
104
+ this.watchers.forEach((watcher) => watcher.close());
105
+ this.watchers.clear();
106
+ }
107
+ }
108
+ /**
109
+ * Base class for File System enabled ProtoObjects
110
+ */
111
+ let ProtoObjectFS = (() => {
112
+ let _classDecorators = [StaticImplements()];
113
+ let _classDescriptor;
114
+ let _classExtraInitializers = [];
115
+ let _classThis;
116
+ let _classSuper = ProtoObject;
117
+ var ProtoObjectFS = _classThis = class extends _classSuper {
118
+ constructor(data) {
119
+ super(data);
120
+ }
121
+ /**
122
+ * Save object to file
123
+ */
124
+ async saveToFile(filePath, format = FileFormat.JSON) {
125
+ try {
126
+ // Ensure directory exists
127
+ await fs.mkdir(dirname(filePath), { recursive: true });
128
+ let content;
129
+ switch (format) {
130
+ case FileFormat.JSON:
131
+ content = JSON.stringify(this.toJSON(), null, 2);
132
+ break;
133
+ case FileFormat.CSV:
134
+ content = this.toCSV();
135
+ break;
136
+ case FileFormat.TEXT:
137
+ content = this.toString();
138
+ break;
139
+ default:
140
+ throw new Error(`Unsupported format: ${format}`);
141
+ }
142
+ await fs.writeFile(filePath, content, "utf8");
143
+ return {
144
+ success: true,
145
+ operation: FileOperationType.SAVE,
146
+ filePath,
147
+ };
148
+ }
149
+ catch (error) {
150
+ return {
151
+ success: false,
152
+ operation: FileOperationType.SAVE,
153
+ filePath,
154
+ error: error,
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * Load object from file
160
+ */
161
+ static async loadFromFile(filePath) {
162
+ try {
163
+ const content = await fs.readFile(filePath, "utf8");
164
+ const format = extname(filePath);
165
+ switch (format) {
166
+ case FileFormat.JSON: {
167
+ const data = JSON.parse(content);
168
+ return this.fromJSON(data);
169
+ }
170
+ case FileFormat.CSV:
171
+ throw new Error("CSV loading not implemented yet");
172
+ case FileFormat.TEXT:
173
+ throw new Error("Text loading not implemented yet");
174
+ default:
175
+ throw new Error(`Unsupported format: ${format}`);
176
+ }
177
+ }
178
+ catch (error) {
179
+ throw new Error(`Failed to load from file ${filePath}: ${error}`);
180
+ }
181
+ }
182
+ /**
183
+ * Load multiple objects from directory
184
+ */
185
+ static async loadManyFromDirectory(directoryPath, pattern = "*.json") {
186
+ try {
187
+ const files = await fs.readdir(directoryPath);
188
+ const jsonFiles = files.filter((file) => {
189
+ if (pattern === "*.json")
190
+ return file.endsWith(".json");
191
+ if (pattern === "*.csv")
192
+ return file.endsWith(".csv");
193
+ return true;
194
+ });
195
+ const objects = [];
196
+ for (const file of jsonFiles) {
197
+ try {
198
+ const object = await this.loadFromFile(join(directoryPath, file));
199
+ objects.push(object);
200
+ }
201
+ catch (error) {
202
+ console.error(`Error loading ${file}:`, error);
203
+ }
204
+ }
205
+ return objects;
206
+ }
207
+ catch (error) {
208
+ throw new Error(`Failed to load from directory ${directoryPath}: ${error}`);
209
+ }
210
+ }
211
+ /**
212
+ * Delete file
213
+ */
214
+ async deleteFile(filePath) {
215
+ try {
216
+ await fs.unlink(filePath);
217
+ return {
218
+ success: true,
219
+ operation: FileOperationType.DELETE,
220
+ filePath,
221
+ };
222
+ }
223
+ catch (error) {
224
+ return {
225
+ success: false,
226
+ operation: FileOperationType.DELETE,
227
+ filePath,
228
+ error: error,
229
+ };
230
+ }
231
+ }
232
+ /**
233
+ * Save multiple objects to directory
234
+ */
235
+ /* eslint-disable no-unused-vars */
236
+ static async saveManyToDirectory(objects, directoryPath, fileNameGenerator = (obj, i) => `object_${i}.json`) {
237
+ /* eslint-enable no-unused-vars */
238
+ const results = [];
239
+ // Ensure directory exists
240
+ await fs.mkdir(directoryPath, { recursive: true });
241
+ for (let i = 0; i < objects.length; i++) {
242
+ const obj = objects[i];
243
+ const fileName = fileNameGenerator(obj, i);
244
+ const filePath = join(directoryPath, fileName);
245
+ const result = await obj.saveToFile(filePath);
246
+ results.push(result);
247
+ }
248
+ return results;
249
+ }
250
+ /**
251
+ * Convert to CSV format
252
+ */
253
+ toCSV(fieldMapping) {
254
+ const data = this.toJSON();
255
+ const fields = fieldMapping ? Object.keys(fieldMapping) : Object.keys(data);
256
+ // Header
257
+ const headers = fields.map((field) => fieldMapping ? fieldMapping[field] : field);
258
+ // Values
259
+ const values = fields.map((field) => {
260
+ const value = data[field];
261
+ if (value === null || value === undefined)
262
+ return "";
263
+ if (typeof value === "string" && value.includes(",")) {
264
+ return `"${value.replace(/"/g, '""')}"`;
265
+ }
266
+ return String(value);
267
+ });
268
+ return `${headers.join(",")}\n${values.join(",")}`;
269
+ }
270
+ /**
271
+ * Batch save with streaming for large datasets
272
+ */
273
+ static async saveManyToFileStream(objects, filePath, format = FileFormat.JSON) {
274
+ try {
275
+ // Ensure directory exists
276
+ await fs.mkdir(dirname(filePath), { recursive: true });
277
+ const writeStream = createWriteStream(filePath);
278
+ if (format === FileFormat.JSON) {
279
+ writeStream.write("[\n");
280
+ for (let i = 0; i < objects.length; i++) {
281
+ const obj = objects[i];
282
+ const json = JSON.stringify(obj.toJSON(), null, 2);
283
+ if (i > 0)
284
+ writeStream.write(",\n");
285
+ writeStream.write(json);
286
+ }
287
+ writeStream.write("\n]");
288
+ }
289
+ else if (format === FileFormat.CSV) {
290
+ // Write CSV header
291
+ if (objects.length > 0) {
292
+ const headers = Object.keys(objects[0].toJSON()).join(",");
293
+ writeStream.write(headers + "\n");
294
+ for (const obj of objects) {
295
+ const csvLine = obj.toCSV();
296
+ const values = csvLine.split("\n")[1]; // Get only values, skip header
297
+ writeStream.write(values + "\n");
298
+ }
299
+ }
300
+ }
301
+ writeStream.end();
302
+ return new Promise((resolve, reject) => {
303
+ writeStream.on("finish", () => {
304
+ resolve({
305
+ success: true,
306
+ operation: FileOperationType.SAVE,
307
+ filePath,
308
+ });
309
+ });
310
+ writeStream.on("error", (error) => {
311
+ reject({
312
+ success: false,
313
+ operation: FileOperationType.SAVE,
314
+ filePath,
315
+ error,
316
+ });
317
+ });
318
+ });
319
+ }
320
+ catch (error) {
321
+ return {
322
+ success: false,
323
+ operation: FileOperationType.SAVE,
324
+ filePath,
325
+ error: error,
326
+ };
327
+ }
328
+ }
329
+ /**
330
+ * Load large datasets with streaming
331
+ */
332
+ /* eslint-disable no-unused-vars */
333
+ static async loadManyFromFileStream(filePath, callback) {
334
+ /* eslint-enable no-unused-vars */
335
+ const readStream = createReadStream(filePath);
336
+ let buffer = "";
337
+ return new Promise((resolve, reject) => {
338
+ readStream.on("data", async (chunk) => {
339
+ buffer += chunk.toString();
340
+ // Simple JSON array parsing (for demo purposes)
341
+ if (buffer.includes("},{")) {
342
+ const objects = buffer.split("},{");
343
+ buffer = objects.pop() || ""; // Keep the last incomplete object
344
+ for (let objStr of objects) {
345
+ try {
346
+ // Fix JSON formatting
347
+ if (!objStr.startsWith("{"))
348
+ objStr = "{" + objStr;
349
+ if (!objStr.endsWith("}"))
350
+ objStr = objStr + "}";
351
+ const data = JSON.parse(objStr);
352
+ const object = this.fromJSON(data);
353
+ await callback(object);
354
+ }
355
+ catch (error) {
356
+ console.error("Error parsing object:", error);
357
+ }
358
+ }
359
+ }
360
+ });
361
+ readStream.on("end", () => {
362
+ resolve();
363
+ });
364
+ readStream.on("error", (error) => {
365
+ reject(error);
366
+ });
367
+ });
368
+ }
369
+ /**
370
+ * Create backup of object with timestamp
371
+ */
372
+ async createBackup(backupDirectory) {
373
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
374
+ const className = this.constructor.name;
375
+ const backupFileName = `${className}_backup_${timestamp}.json`;
376
+ const backupPath = join(backupDirectory, backupFileName);
377
+ return this.saveToFile(backupPath, FileFormat.JSON);
378
+ }
379
+ };
380
+ __setFunctionName(_classThis, "ProtoObjectFS");
381
+ (() => {
382
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
383
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
384
+ ProtoObjectFS = _classThis = _classDescriptor.value;
385
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
386
+ __runInitializers(_classThis, _classExtraInitializers);
387
+ })();
388
+ return ProtoObjectFS = _classThis;
389
+ })();
390
+ export { ProtoObjectFS };
391
+ //# sourceMappingURL=proto-object-fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto-object-fs.js","sourceRoot":"","sources":["../../../src/classes/proto-object-fs.ts"],"names":[],"mappings":"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"}