proto.io 0.0.147 → 0.0.148

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.mjs CHANGED
@@ -3,8 +3,8 @@ import { Server } from '@o2ter/server-js';
3
3
  import { Q as QueryValidator, g as generateId } from './internals/random-BjV_01xP.mjs';
4
4
  import { P as PVK } from './internals/private-BUpLAMZi.mjs';
5
5
  import { asyncStream, asyncIterableToArray, isBinaryData, base64ToBuffer } from '@o2ter/utils-js';
6
- import { T as TQuery, M as MASTER_USER_HEADER_NAME, a as MASTER_PASS_HEADER_NAME, A as AUTH_COOKIE_KEY, b as TUser, P as ProtoType, s as serialize, d as deserialize, U as UPLOAD_TOKEN_HEADER_NAME } from './internals/index-Do-zNOpD.mjs';
7
- export { c as ProtoClient, e as classExtends, j as isFile, f as isObject, i as isQuery, h as isRole, g as isUser } from './internals/index-Do-zNOpD.mjs';
6
+ import { T as TQuery, M as MASTER_USER_HEADER_NAME, a as MASTER_PASS_HEADER_NAME, A as AUTH_COOKIE_KEY, b as TUser, P as ProtoType, s as serialize, d as deserialize, U as UPLOAD_TOKEN_HEADER_NAME } from './internals/index-DGau0Wqf.mjs';
7
+ export { c as ProtoClient, e as classExtends, j as isFile, f as isObject, i as isQuery, h as isRole, g as isUser } from './internals/index-DGau0Wqf.mjs';
8
8
  import { d as decodeUpdateOp, T as TObject, i as isShape, a as isPointer, b as isRelation, c as defaultObjectKeyTypes, e as isPrimitive } from './internals/index-EOtjV6U_.mjs';
9
9
  import jwt from 'jsonwebtoken';
10
10
  import { Blob } from 'node:buffer';
@@ -316,9 +316,10 @@ class ProtoQuery extends TQuery {
316
316
  });
317
317
  }
318
318
  async insert(attrs, options) {
319
- const beforeSave = this._proto[PVK].triggers?.beforeSave?.[this.className];
320
- const afterSave = this._proto[PVK].triggers?.afterSave?.[this.className];
321
319
  const context = options?.context ?? {};
320
+ const silent = _.castArray(options?.silent ?? []);
321
+ const beforeSave = _.includes(silent, 'beforeSave') ? null : this._proto[PVK].triggers?.beforeSave?.[this.className];
322
+ const afterSave = _.includes(silent, 'afterSave') ? null : this._proto[PVK].triggers?.afterSave?.[this.className];
322
323
  const object = this._proto.Object(this.className);
323
324
  for (const [key, value] of _.toPairs(attrs)) {
324
325
  object[PVK].mutated[key] = { $set: value };
@@ -338,9 +339,10 @@ class ProtoQuery extends TQuery {
338
339
  return result;
339
340
  }
340
341
  async insertMany(values, options) {
341
- const beforeSave = this._proto[PVK].triggers?.beforeSave?.[this.className];
342
- const afterSave = this._proto[PVK].triggers?.afterSave?.[this.className];
343
342
  const context = options?.context ?? {};
343
+ const silent = _.castArray(options?.silent ?? []);
344
+ const beforeSave = _.includes(silent, 'beforeSave') ? null : this._proto[PVK].triggers?.beforeSave?.[this.className];
345
+ const afterSave = _.includes(silent, 'afterSave') ? null : this._proto[PVK].triggers?.afterSave?.[this.className];
344
346
  if (_.isFunction(beforeSave) || _.isFunction(afterSave)) {
345
347
  const objects = _.map(values, attr => {
346
348
  const object = this._proto.Object(this.className);
@@ -371,9 +373,10 @@ class ProtoQuery extends TQuery {
371
373
  }, values);
372
374
  }
373
375
  async updateOne(update, options) {
374
- const beforeSave = this._proto[PVK].triggers?.beforeSave?.[this.className];
375
- const afterSave = this._proto[PVK].triggers?.afterSave?.[this.className];
376
376
  const context = options?.context ?? {};
377
+ const silent = _.castArray(options?.silent ?? []);
378
+ const beforeSave = _.includes(silent, 'beforeSave') ? null : this._proto[PVK].triggers?.beforeSave?.[this.className];
379
+ const afterSave = _.includes(silent, 'afterSave') ? null : this._proto[PVK].triggers?.afterSave?.[this.className];
377
380
  if (_.isFunction(beforeSave)) {
378
381
  const object = this._objectMethods(_.first(await asyncIterableToArray(this._dispatcher(options).find({ ...this._queryOptions, limit: 1 }))));
379
382
  if (!object)
@@ -389,9 +392,10 @@ class ProtoQuery extends TQuery {
389
392
  return result;
390
393
  }
391
394
  async upsertOne(update, setOnInsert, options) {
392
- const beforeSave = this._proto[PVK].triggers?.beforeSave?.[this.className];
393
- const afterSave = this._proto[PVK].triggers?.afterSave?.[this.className];
394
395
  const context = options?.context ?? {};
396
+ const silent = _.castArray(options?.silent ?? []);
397
+ const beforeSave = _.includes(silent, 'beforeSave') ? null : this._proto[PVK].triggers?.beforeSave?.[this.className];
398
+ const afterSave = _.includes(silent, 'afterSave') ? null : this._proto[PVK].triggers?.afterSave?.[this.className];
395
399
  if (_.isFunction(beforeSave)) {
396
400
  let object = this._objectMethods(_.first(await asyncIterableToArray(this._dispatcher(options).find({ ...this._queryOptions, limit: 1 }))));
397
401
  if (object) {
@@ -426,9 +430,10 @@ class ProtoQuery extends TQuery {
426
430
  return result;
427
431
  }
428
432
  async deleteOne(options) {
429
- const beforeDelete = this._proto[PVK].triggers?.beforeDelete?.[this.className];
430
- const afterDelete = this._proto[PVK].triggers?.afterDelete?.[this.className];
431
433
  const context = options?.context ?? {};
434
+ const silent = _.castArray(options?.silent ?? []);
435
+ const beforeDelete = _.includes(silent, 'beforeDelete') ? null : this._proto[PVK].triggers?.beforeDelete?.[this.className];
436
+ const afterDelete = _.includes(silent, 'afterDelete') ? null : this._proto[PVK].triggers?.afterDelete?.[this.className];
432
437
  let result;
433
438
  if (_.isFunction(beforeDelete)) {
434
439
  const object = this._objectMethods(_.first(await asyncIterableToArray(this._dispatcher(options).find({ ...this._queryOptions, limit: 1 }))));
@@ -449,9 +454,10 @@ class ProtoQuery extends TQuery {
449
454
  return result;
450
455
  }
451
456
  async deleteMany(options) {
452
- const beforeDelete = this._proto[PVK].triggers?.beforeDelete?.[this.className];
453
- const afterDelete = this._proto[PVK].triggers?.afterDelete?.[this.className];
454
457
  const context = options?.context ?? {};
458
+ const silent = _.castArray(options?.silent ?? []);
459
+ const beforeDelete = _.includes(silent, 'beforeDelete') ? null : this._proto[PVK].triggers?.beforeDelete?.[this.className];
460
+ const afterDelete = _.includes(silent, 'afterDelete') ? null : this._proto[PVK].triggers?.afterDelete?.[this.className];
455
461
  if (_.isFunction(beforeDelete) || _.isFunction(afterDelete)) {
456
462
  const objects = this._objectMethods(await asyncIterableToArray(this._dispatcher(options).find(this._queryOptions)));
457
463
  if (_.isEmpty(objects))
@@ -925,31 +931,16 @@ class ProtoInternal {
925
931
  }
926
932
  }
927
933
  async saveFile(proto, object, options) {
928
- const beforeSave = this.triggers?.beforeSaveFile;
929
- const afterSave = this.triggers?.afterSaveFile;
930
- const context = options?.context ?? {};
931
- if (_.isFunction(beforeSave)) {
932
- await beforeSave(proxy(Object.setPrototypeOf({ object, context }, proto)));
933
- }
934
934
  if (object.objectId) {
935
935
  object = await this.updateFile(proto, object, options);
936
936
  }
937
937
  else {
938
938
  object = await this.createFile(proto, object, options);
939
939
  }
940
- if (_.isFunction(afterSave)) {
941
- await afterSave(proxy(Object.setPrototypeOf({ object, context }, proto)));
942
- }
943
940
  return object;
944
941
  }
945
942
  async deleteFile(proto, object, options) {
946
- const beforeDelete = this.triggers?.beforeDeleteFile;
947
- const afterDelete = this.triggers?.afterDeleteFile;
948
943
  object = await object.fetchIfNeeded(['token'], options);
949
- const context = options?.context ?? {};
950
- if (_.isFunction(beforeDelete)) {
951
- await beforeDelete(proxy(Object.setPrototypeOf({ object, context }, proto)));
952
- }
953
944
  const deleted = await proto.Query('File')
954
945
  .equalTo('_id', object.objectId)
955
946
  .deleteOne(options);
@@ -959,9 +950,6 @@ class ProtoInternal {
959
950
  object[PVK].extra = {};
960
951
  }
961
952
  this.destroyFileData(proto, object.token);
962
- if (_.isFunction(afterDelete)) {
963
- await afterDelete(proxy(Object.setPrototypeOf({ object, context }, proto)));
964
- }
965
953
  return object;
966
954
  }
967
955
  fileData(proto, object, options) {
@@ -1409,18 +1397,6 @@ class ProtoService extends ProtoType {
1409
1397
  this[PVK].triggers.afterDelete = {};
1410
1398
  this[PVK].triggers.afterDelete[name] = callback;
1411
1399
  }
1412
- beforeSaveFile(callback) {
1413
- this[PVK].triggers.beforeSaveFile = callback;
1414
- }
1415
- afterSaveFile(callback) {
1416
- this[PVK].triggers.afterSaveFile = callback;
1417
- }
1418
- beforeDeleteFile(callback) {
1419
- this[PVK].triggers.beforeDeleteFile = callback;
1420
- }
1421
- afterDeleteFile(callback) {
1422
- this[PVK].triggers.afterDeleteFile = callback;
1423
- }
1424
1400
  lockTable(className, update) {
1425
1401
  return this.storage.lockTable(className, update);
1426
1402
  }
@@ -1587,11 +1563,11 @@ var classesRoute = (router, proto) => {
1587
1563
  if (!_.includes(classes, name))
1588
1564
  return res.sendStatus(404);
1589
1565
  await response(res, async () => {
1590
- const { operation, context, random, attributes, update, setOnInsert, ...options } = deserialize(req.body);
1566
+ const { operation, context, silent, random, attributes, update, setOnInsert, ...options } = deserialize(req.body);
1591
1567
  const payload = proto.connect(req);
1592
1568
  const query = payload.Query(name);
1593
1569
  query[PVK].options = options;
1594
- const opts = { master: payload.isMaster, context };
1570
+ const opts = { master: payload.isMaster, context, silent };
1595
1571
  switch (operation) {
1596
1572
  case 'explain':
1597
1573
  if (!payload.isMaster)