@hotfusion/modeller 0.0.2 → 0.0.4

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
@@ -1,29 +1,26 @@
1
1
  # @hotfusion/modeller
2
2
 
3
- A schema-first, in-memory data layer for Node.js with hooks, workers, methods, uploads, streams, and event subscriptions. Built around AJV validation, mingo queries, and a pluggable `Adapter` for persistence.
3
+ A schema-first data layer for Node.js, built as a three-layer chain:
4
4
 
5
- ```ts
6
- import { Model, Adapter } from '@hotfusion/modeller';
5
+ ```
6
+ ┌──────────────┐ data primitives — schema, validation, CRUD,
7
+ │ core.ts │ indexes, persistence adapter, trash
8
+ └──────┬───────┘
9
+ │ extends
10
+ ┌──────▼───────┐ behavior — hooks, workers, methods, uploads,
11
+ │ model.ts │ streams, events, subscriptions, logging
12
+ └──────┬───────┘
13
+ │ consumed by
14
+ ┌──────▼───────┐ transport — HTTP + WebSocket exposure of any model
15
+ │ server.ts │ (auth, sessions, socket fan-out)
16
+ └──────────────┘
7
17
  ```
8
18
 
9
- ---
10
-
11
- ## Table of Contents
19
+ Each layer is usable on its own. Pick the layer that matches the problem you're solving.
12
20
 
13
- - [Quick Start](#quick-start)
14
- - [Schema](#schema)
15
- - [CRUD Methods](#crud-methods)
16
- - [Hooks](#hooks)
17
- - [Workers](#workers)
18
- - [Methods](#methods)
19
- - [Uploads](#uploads)
20
- - [Streams](#streams)
21
- - [Events & Subscriptions](#events--subscriptions)
22
- - [Internal Event Emitter](#internal-event-emitter)
23
- - [Extensions](#extensions)
24
- - [Adapter (Persistence)](#adapter-persistence)
25
- - [Logging](#logging)
26
- - [Trash](#trash)
21
+ ```ts
22
+ import { Adapter, Model, Server, Bundler, KeyGen } from '@hotfusion/modeller';
23
+ ```
27
24
 
28
25
  ---
29
26
 
@@ -43,451 +40,32 @@ const users = new Model('users', {
43
40
  }
44
41
  });
45
42
 
46
- await users.insert({ email: 'alex@hotfusion.ca', name: 'Alex' });
47
- const found = await users.get({ email: 'alex@hotfusion.ca' });
48
- const list = await users.list({}, { start: 0, count: 50 });
49
- ```
50
-
51
- ---
52
-
53
- ## Schema
54
-
55
- Schemas are JSON Schema (AJV-compatible) with a few Modeller-specific keywords:
56
-
57
- | Keyword | Effect |
58
- |-------------|-------------------------------------------------------------------------|
59
- | `unique` | Enforces uniqueness across all documents on `insert` / `update`. |
60
- | `private` | Field is stripped from read responses unless `{ private: true }` is set.|
61
- | `index` | Builds an in-memory index on the field for fast lookups. |
62
- | `protected` | Reserved for transport-layer protection (consumed by `Server`). |
63
- | `hidden` | Hint for client-side rendering. Not enforced by the core. |
64
- | `default` | Standard JSON Schema default. |
65
- | `model` | (async) References another model by id for FK-style validation. |
66
-
67
- `$ref` is resolved against `$defs` / `definitions`, and against any `schemes` passed to the constructor. A `$ref` of the form `someModel?key=_id&label=name` is rewritten into a model reference with display metadata.
68
-
69
- ---
70
-
71
- ## CRUD Methods
72
-
73
- All CRUD methods are async, fire `before:*` / `after:*` hooks, validate against the schema, and emit an event on the internal emitter.
74
-
75
- ### `insert(key?, ...patches, opts?)`
76
-
77
- Merges `key` and any number of patch objects into a single document, validates it, assigns an `_id` (BSON `ObjectId`), and stores it.
78
-
79
- ```ts
80
- await users.insert({ email: 'alex@hotfusion.ca' }, { name: 'Alex' });
81
- await users.insert({ email: 'admin@hotfusion.ca' }, { role: 'admin' }, { private: true });
82
- ```
83
-
84
- - Returns the inserted document. `private: true` includes `private` fields in the response.
85
- - Throws `{ code: 'VALIDATION_ERROR', errors }` or `{ code: 'UNIQUE_VIOLATION', field }`.
86
-
87
- ### `update(key, updates, opts?)`
88
-
89
- Finds a document by `key` (mingo query), shallow-merges `updates`, re-validates, and saves.
90
-
91
- ```ts
92
- await users.update({ _id: id }, { name: 'Alex H.' });
93
- ```
94
-
95
- Returns the merged document, or `null` if no match. Same error codes as `insert`.
96
-
97
- ### `delete(key)`
98
-
99
- Removes the document matching `key`. If `trash` is not disabled and an adapter is configured, the document is moved to the in-memory trash bin.
100
-
101
- ```ts
102
- await users.delete({ _id: id }); // → { _id } or null
103
- ```
104
-
105
- ### `get(key, opts?)`
106
-
107
- Returns a single document or `null`. Pass `{ private: true }` to include private fields.
108
-
109
- ```ts
110
- await users.get({ email: 'alex@hotfusion.ca' });
111
- ```
112
-
113
- ### `list(query?, opts?)`
114
-
115
- Paginated, **exact-match** query (mingo).
116
-
117
- ```ts
118
- await users.list({ role: 'admin' }, { start: 0, count: 25 });
119
- ```
120
-
121
- Default `count` is 10. Fires `before:list` and `after:list` with the query as payload `data`.
122
-
123
- ### `find(query?, opts?)`
124
-
125
- Like `list`, but **strings match as case-insensitive substrings**. Non-string values match exactly.
126
-
127
- ```ts
128
- await users.find({ name: 'al' }, { max: 10 });
129
- // matches 'Alex', 'Albert', ...
130
- ```
131
-
132
- Default `max` is 10. Does **not** fire hooks.
133
-
134
- ---
135
-
136
- ## Hooks
137
-
138
- Hooks run before or after a CRUD operation. They can short-circuit an operation by throwing, mutate the payload, or perform side effects. Hooks support both synchronous and asynchronous callbacks.
139
-
140
- ### Registering
141
-
142
- ```ts
143
- users.hook({
144
- id : 'normalize-email',
145
- on : 'before:insert',
146
- callback : async ({ data }) => {
147
- if (data?.email) data.email = data.email.toLowerCase();
148
- }
149
- });
150
- ```
151
-
152
- Multiple events can share a callback:
153
-
154
- ```ts
155
- users.hook({
156
- id : 'audit',
157
- on : ['after:insert', 'after:update', 'after:delete'],
158
- callback : ({ operation, key, data }) => audit.log(operation, key, data)
159
- });
160
- ```
161
-
162
- ### Removing
163
-
164
- ```ts
165
- users.unhook('normalize-email');
166
- ```
167
-
168
- ### Hook events
169
-
170
- | Event | Payload fields |
171
- |-------------------|-----------------------------------------------|
172
- | `before:insert` | `operation`, `timing`, `data` |
173
- | `after:insert` | `operation`, `timing`, `data`, `key: { _id }` |
174
- | `before:update` | `operation`, `timing`, `key`, `data` |
175
- | `after:update` | `operation`, `timing`, `key`, `data` |
176
- | `before:delete` | `operation`, `timing`, `key` |
177
- | `after:delete` | `operation`, `timing`, `key`, `data` |
178
- | `before:list` | `operation`, `timing`, `data` (= query) |
179
- | `after:list` | `operation`, `timing`, `data` (= query) |
180
-
181
- Note: `find` does not fire hooks; `get` does not fire hooks.
182
-
183
- ### Scheduled hooks
184
-
185
- Pass `schedule: <ms>` to defer execution via `setTimeout`. Scheduled hooks are fire-and-forget — they don't block the operation and their errors aren't propagated.
186
-
187
- ```ts
188
43
  users.hook({
189
- id : 'welcome-email',
190
- on : 'after:insert',
191
- schedule : 5_000,
192
- callback : ({ data }) => mailer.send(data.email, 'welcome')
193
- });
194
- ```
195
-
196
- ### Throwing from a hook
197
-
198
- A non-scheduled hook that throws aborts the operation. The error is logged and re-thrown to the caller.
199
-
200
- ---
201
-
202
- ## Workers
203
-
204
- Workers are interval-based background tasks bound to the model. They can be named (managed individually) or unsigned (managed in bulk).
205
-
206
- ### Registering
207
-
208
- ```ts
209
- users.worker({
210
- id : 'sync',
211
- interval : 30_000,
212
- immediate : true, // run once on start, default true
213
- handler : async (model) => {
214
- await model.pull();
215
- }
216
- });
217
- ```
218
-
219
- Omit `id` for an unsigned worker:
220
-
221
- ```ts
222
- users.worker({ interval: 60_000, handler: () => cleanup() });
223
- ```
224
-
225
- ### Lifecycle
226
-
227
- ```ts
228
- users.start(); // start all workers (named + unsigned)
229
- users.start('sync'); // start a specific named worker
230
- users.stop(); // stop all
231
- users.stop('sync'); // stop a specific named worker
232
- users.isRunning('sync'); // → boolean
233
- ```
234
-
235
- Errors thrown inside a worker handler are caught and logged at `error` level — they never crash the interval.
236
-
237
- ---
238
-
239
- ## Methods
240
-
241
- Methods are named, schemaless RPC-style operations attached to the model. Use them for anything that doesn't fit the CRUD shape.
242
-
243
- ```ts
244
- users.method({
245
- id : 'resetPassword',
246
- handler : async ({ email, newPassword }, model, ctx) => {
247
- const user = await model.get({ email });
248
- if (!user) throw { code: 'NOT_FOUND' };
249
- return model.update({ _id: user._id }, { password: newPassword });
250
- }
44
+ id: 'normalize-email',
45
+ on: 'before:insert',
46
+ callback: ({ data }) => { data.email = data.email.toLowerCase(); }
251
47
  });
252
48
 
253
- await users.call('resetPassword', { email, newPassword }, ctx);
254
- users.getMethods(); // → ['resetPassword']
255
- ```
256
-
257
- `call` throws `{ code: 'METHOD_NOT_FOUND', id }` if the method isn't registered.
258
-
259
- ---
260
-
261
- ## Uploads
262
-
263
- Uploads receive a `Buffer` plus a `fields` map (typically multipart form fields).
264
-
265
- ```ts
266
- users.upload({
267
- id : 'avatar',
268
- handler : async (file, fields, model) => {
269
- const path = await storage.put(file, fields.filename);
270
- return model.update({ _id: fields.userId }, { avatar: path });
271
- }
272
- });
273
-
274
- await users.callUpload('avatar', buffer, { userId, filename: 'me.png' });
275
- users.getUploads(); // → ['avatar']
276
- ```
277
-
278
- ---
279
-
280
- ## Streams
281
-
282
- Streams are similar to uploads but expect chunked `Buffer` data with arbitrary `meta`.
283
-
284
- ```ts
285
- users.stream({
286
- id : 'import',
287
- handler : async (chunk, meta, model) => {
288
- for (const row of parseCsv(chunk)) await model.insert(row);
289
- }
290
- });
291
-
292
- await users.callStream('import', chunk, { source: 'crm' });
293
- users.getStreams(); // → ['import']
294
- ```
295
-
296
- ---
297
-
298
- ## Events & Subscriptions
299
-
300
- Events are named, schema-validated handlers that clients subscribe to. Unlike `method` (one-shot RPC), events are designed for fan-out to multiple subscribers, scoped by query.
301
-
302
- ### Defining an event
303
-
304
- ```ts
305
- users.event({
306
- id : 'roleChanged',
307
- schema : {
308
- type : 'object',
309
- required : ['_id', 'role'],
310
- properties: {
311
- _id : { type: 'string' },
312
- role : { type: 'string', enum: ['user', 'admin'] }
313
- }
314
- },
315
- handler : async ({ _id, role }, model, ctx) => {
316
- return model.update({ _id }, { role });
317
- }
318
- });
319
- ```
320
-
321
- If `schema` is set, args are validated before the handler runs. Validation errors throw `{ code: 'VALIDATION_ERROR', errors }`.
322
-
323
- ### Subscribing
324
-
325
- A subscription is keyed by a normalized query — same query keys/values produce the same subscription instance.
326
-
327
- ```ts
328
- const { subscription, subId } = users.subscribe({ role: 'admin' });
329
-
330
- subscription.on('publish', payload => {
331
- console.log('admin update:', payload);
332
- });
333
-
334
- // shorthand — returns just the subscription
335
- const sub = users.subscription({ role: 'admin' });
336
- ```
337
-
338
- ### Dispatching an event from a subscription
339
-
340
- `dispatch` validates args (if a schema is set) and runs the matching event handler.
341
-
342
- ```ts
343
- await sub.dispatch('roleChanged', { _id, role: 'admin' }, ctx);
344
- ```
345
-
346
- Throws `{ code: 'EVENT_NOT_FOUND', id }` if the event isn't registered.
347
-
348
- ### Publishing to subscribers
349
-
350
- `publish` is your fan-out hook — it emits to every listener attached via `on('publish', ...)` for that subscription.
351
-
352
- ```ts
353
- sub.publish({ type: 'role-changed', _id, role: 'admin' });
354
- ```
355
-
356
- A common pattern is calling `publish` from inside an `after:update` hook to notify everyone watching that slice of the model.
357
-
358
- ### Inspection / cleanup
359
-
360
- ```ts
361
- sub.getEvents(); // → ['roleChanged']
362
- users.unsubscribe({ role: 'admin' });
363
- ```
364
-
365
- ---
366
-
367
- ## Internal Event Emitter
368
-
369
- Separate from the subscription system, every model is also an `EventEmitter`. CRUD operations emit on this emitter directly — useful for in-process listeners that don't need query scoping.
370
-
371
- ```ts
372
- users.on('insert', doc => console.log('inserted', doc));
373
- users.on('update', ({ key, data }) => console.log('updated', key, data));
374
- users.on('delete', result => console.log('deleted', result));
375
- users.on('log', entry => console.log(entry)); // log feed
376
- ```
377
-
378
- `on`, `off`, `once`, `emit` are all available. Built-in events: `insert`, `update`, `delete`, `log`.
379
-
380
- ---
381
-
382
- ## Extensions
383
-
384
- Pass `extensions: [...]` in the constructor options to mount sub-models as named properties on the parent.
385
-
386
- ```ts
387
- const ssh = new Model('ssh', sshSchema);
388
- const users = new Model('users', userSchema, { extensions: [ssh] });
389
-
390
- users.ssh.insert({ host: '...', port: 22, username: 'root' });
391
- users.getExtensions(); // → [Model('ssh')]
392
- ```
393
-
394
- The mount key is `extension.id`.
395
-
396
- ---
397
-
398
- ## Adapter (Persistence)
399
-
400
- Models are in-memory by default. Provide an `Adapter` subclass to persist on every write and rehydrate on `pull()`.
401
-
402
- ```ts
403
- import { Adapter, Model } from '@hotfusion/modeller';
404
-
405
- class FileAdapter extends Adapter {
406
- constructor(id) {
407
- super(id);
408
- this.path = `./data/${id}.json`;
409
- }
410
-
411
- async sync(id, doc) {
412
- // called on every insert / update / delete
413
- }
414
-
415
- async pull() {
416
- // return the array of documents to load into memory
417
- return JSON.parse(await fs.readFile(this.path, 'utf8'));
418
- }
419
- }
420
-
421
- const users = new Model('users', schema, { adapter: FileAdapter });
422
- await users.pull(); // hydrate before serving traffic
423
- ```
424
-
425
- When an adapter is configured, deletes are also moved to the trash bin (unless you pass `trash: false` in options).
426
-
427
- ---
428
-
429
- ## Logging
430
-
431
- A built-in logger surfaces hook, worker, method, event, and CRUD activity. Configure it at construction time:
432
-
433
- ```ts
434
- const users = new Model('users', schema, {
435
- level : 'debug', // 'debug' | 'info' | 'warn' | 'error' | 'silent'
436
- timestamp : true,
437
- features : { hook: true, worker: true, method: true, event: false, crud: true },
438
- onEntry : entry => myLogger.log(entry)
439
- });
440
- ```
441
-
442
- Or supply a custom adapter:
443
-
444
- ```ts
445
- {
446
- logAdapter: { log: entry => myStore.append(entry) }
447
- }
448
- ```
449
-
450
- You can also listen to `'log'` on the model itself:
451
-
452
- ```ts
453
- users.on('log', entry => sink.write(entry));
454
- ```
455
-
456
- Each entry includes `level`, `feature`, `modelId`, `message`, `callSite`, `timestamp`, and optional `data`.
457
-
458
- ---
459
-
460
- ## Trash
461
-
462
- When an adapter is configured, deletes go to an in-memory trash bin keyed by `_id`.
463
-
464
- ```ts
465
- await users.delete({ _id });
466
-
467
- // elsewhere — direct trash access isn't exposed on Model yet,
468
- // but Trash supports: restore, has, get, permanentDelete, empty,
469
- // size, list({ start, count }), find(query), findAll(query).
49
+ await users.insert({ email: 'alex@hotfusion.ca', name: 'Alex' });
470
50
  ```
471
51
 
472
- Pass `{ trash: false }` in model options to disable.
473
-
474
52
  ---
475
53
 
476
- ## Errors
54
+ ## Documentation
477
55
 
478
- All errors thrown by Modeller are plain objects with a `code`:
56
+ | Section | Covers |
57
+ |--------------------------------------|-----------------------------------------------------------------------|
58
+ | [Core layer](./docs/CORE.md) | Schema, validator, CRUD primitives, indexes, adapter, trash. |
59
+ | [Model layer](./docs/MODEL.md) | Hooks, workers, methods, uploads, streams, events, subscriptions, logging, extensions. |
60
+ | [Server layer](./docs/SERVER.md) | HTTP + WebSocket transport, auth, server events, public API. |
61
+ | [Utilities](./docs/UTILITIES.md) | `Bundler`, `KeyGen`, `Adapter`, encryption, JWT helpers. |
62
+ | [Errors](./docs/ERRORS.md) | Error codes thrown by the framework. |
63
+ | [Common patterns](./docs/PATTERNS.md)| Recipes for publish-on-update, FK validation, extensions, workers. |
479
64
 
480
- | Code | Source |
481
- |---------------------|-------------------------------------------------|
482
- | `VALIDATION_ERROR` | AJV failed on `insert` / `update` / event args |
483
- | `UNIQUE_VIOLATION` | A `unique` field collided |
484
- | `METHOD_NOT_FOUND` | `call('id', ...)` with unregistered id |
485
- | `UPLOAD_NOT_FOUND` | `callUpload('id', ...)` with unregistered id |
486
- | `STREAM_NOT_FOUND` | `callStream('id', ...)` with unregistered id |
487
- | `EVENT_NOT_FOUND` | `subscription.dispatch('id', ...)` mismatch |
65
+ Start with **Model** if you're building an app. Drop down to **Core** when you need to understand schema or persistence semantics. Read **Server** when you're ready to expose models over the network.
488
66
 
489
67
  ---
490
68
 
491
69
  ## License
492
70
 
493
- UNLICENSED — internal HotFusion project.
71
+ UNLICENSED — internal HotFusion project.
package/dist/connector.js CHANGED
@@ -227,37 +227,62 @@ class Connector {
227
227
  }
228
228
  async stream(path, files, meta, onProgress) {
229
229
  const CHUNK_SIZE = 256 * 1024;
230
+ const ACK_TIMEOUT_MS = 30_000;
231
+ const COMPLETE_TIMEOUT_MS = 120_000;
230
232
  const [id, scope, method] = path.replace(/^\//, '').split('/');
231
233
  const results = [];
234
+ const waitFor = (event, timeoutMs) => new Promise((resolve, reject) => {
235
+ const onEvent = (data) => { clearTimeout(timer); resolve(data); };
236
+ const timer = setTimeout(() => {
237
+ this._socket.off(event, onEvent);
238
+ reject(new Error(`Timeout waiting for ${event} after ${timeoutMs}ms`));
239
+ }, timeoutMs);
240
+ this._socket.once(event, onEvent);
241
+ });
232
242
  for (const file of files) {
233
243
  const uploadId = Math.random().toString(36).slice(2) + Date.now();
234
244
  const buffer = await file.arrayBuffer();
235
245
  const totalChunks = Math.ceil(buffer.byteLength / CHUNK_SIZE);
236
- const { fromChunk } = await new Promise(resolve => {
237
- this._socket.once(`upload:resume:${uploadId}`, resolve);
238
- this._socket.emit('upload:resume', { uploadId });
239
- });
240
- this._socket.emit('upload:start', {
241
- uploadId,
242
- id,
243
- scope,
244
- method,
245
- meta: { ...meta, filename: file.name },
246
- totalChunks,
246
+ // Arm complete/error listeners up front
247
+ const completePromise = new Promise((resolve, reject) => {
248
+ const onComplete = (data) => { cleanup(); resolve(data); };
249
+ const onError = (err) => { cleanup(); reject(new Error(typeof err === 'string' ? err : (err?.message ?? String(err)))); };
250
+ const timer = setTimeout(() => { cleanup(); reject(new Error(`Upload ${uploadId} timed out`)); }, COMPLETE_TIMEOUT_MS);
251
+ const cleanup = () => {
252
+ clearTimeout(timer);
253
+ this._socket.off(`upload:complete:${uploadId}`, onComplete);
254
+ this._socket.off(`upload:error:${uploadId}`, onError);
255
+ };
256
+ this._socket.once(`upload:complete:${uploadId}`, onComplete);
257
+ this._socket.once(`upload:error:${uploadId}`, onError);
247
258
  });
248
- for (let i = fromChunk; i < totalChunks; i++) {
249
- const chunk = buffer.slice(i * CHUNK_SIZE, (i + 1) * CHUNK_SIZE);
250
- await new Promise(resolve => {
251
- this._socket.once(`upload:ack:${uploadId}:${i}`, resolve);
252
- this._socket.emit('upload:chunk', { uploadId, index: i, data: chunk });
259
+ try {
260
+ // 1. Send start, WAIT for server to ack it's ready
261
+ const startedWait = waitFor(`upload:started:${uploadId}`, ACK_TIMEOUT_MS);
262
+ this._socket.emit('upload:start', {
263
+ uploadId,
264
+ id,
265
+ scope,
266
+ method,
267
+ meta: { ...meta, filename: file.name },
268
+ totalChunks,
253
269
  });
254
- onProgress?.(i + 1, totalChunks, file);
270
+ await startedWait;
271
+ // 2. Now safe to send chunks
272
+ for (let i = 0; i < totalChunks; i++) {
273
+ const chunk = buffer.slice(i * CHUNK_SIZE, (i + 1) * CHUNK_SIZE);
274
+ const ack = waitFor(`upload:ack:${uploadId}:${i}`, ACK_TIMEOUT_MS);
275
+ this._socket.emit('upload:chunk', { uploadId, index: i, data: chunk });
276
+ await ack;
277
+ onProgress?.(i + 1, totalChunks, file);
278
+ }
279
+ const result = await completePromise;
280
+ results.push(result);
281
+ }
282
+ catch (err) {
283
+ this._socket.emit('upload:abort', { uploadId });
284
+ throw err;
255
285
  }
256
- const result = await new Promise((resolve, reject) => {
257
- this._socket.once(`upload:complete:${uploadId}`, resolve);
258
- this._socket.once(`upload:error:${uploadId}`, reject);
259
- });
260
- results.push(result);
261
286
  }
262
287
  return results;
263
288
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}