proto.io 0.0.148 → 0.0.150

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 (50) hide show
  1. package/dist/adapters/file/database.d.ts +2 -2
  2. package/dist/adapters/file/database.js +2 -2
  3. package/dist/adapters/file/database.mjs +2 -2
  4. package/dist/adapters/file/filesystem.d.ts +2 -2
  5. package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
  6. package/dist/adapters/storage/progres.d.ts +6 -1
  7. package/dist/adapters/storage/progres.js +13 -4
  8. package/dist/adapters/storage/progres.js.map +1 -1
  9. package/dist/adapters/storage/progres.mjs +13 -4
  10. package/dist/adapters/storage/progres.mjs.map +1 -1
  11. package/dist/client.d.ts +3 -5
  12. package/dist/client.js +2 -2
  13. package/dist/client.mjs +3 -3
  14. package/dist/index.d.ts +3 -5
  15. package/dist/index.js +53 -20
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +54 -21
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/internals/{index-CvfRsxEZ.d.ts → index-013pxZ3P.d.ts} +5 -78
  20. package/dist/internals/index-013pxZ3P.d.ts.map +1 -0
  21. package/dist/internals/{index-EOtjV6U_.mjs → index-BmRuvHVZ.mjs} +11 -1
  22. package/dist/internals/index-BmRuvHVZ.mjs.map +1 -0
  23. package/dist/internals/index-BqFdBhFc.js.map +1 -1
  24. package/dist/internals/{index-DZS2c96L.js → index-CSNRyhjB.js} +2 -2
  25. package/dist/internals/{index-DZS2c96L.js.map → index-CSNRyhjB.js.map} +1 -1
  26. package/dist/internals/{index-C6zdNpc_.js → index-CVutVPmd.js} +11 -1
  27. package/dist/internals/{index-C6zdNpc_.js.map → index-CVutVPmd.js.map} +1 -1
  28. package/dist/internals/index-CsRN32Jf.d.ts +60 -0
  29. package/dist/internals/index-CsRN32Jf.d.ts.map +1 -0
  30. package/dist/internals/{index-D4VXQ1FB.d.ts → index-CyX8Lu9K.d.ts} +3 -2
  31. package/dist/internals/index-CyX8Lu9K.d.ts.map +1 -0
  32. package/dist/internals/{index-tNCIyuCp.js → index-D1YGwuNK.js} +8 -4
  33. package/dist/internals/index-D1YGwuNK.js.map +1 -0
  34. package/dist/internals/index-be1VYBY2.mjs.map +1 -1
  35. package/dist/internals/{index-DGau0Wqf.mjs → index-c-CaNuVY.mjs} +8 -4
  36. package/dist/internals/index-c-CaNuVY.mjs.map +1 -0
  37. package/dist/internals/{index-DTZ5uRgF.mjs → index-tU-lsQqj.mjs} +2 -2
  38. package/dist/internals/{index-DTZ5uRgF.mjs.map → index-tU-lsQqj.mjs.map} +1 -1
  39. package/dist/internals/{random-XGNkddOu.js → random-DBDmz54D.js} +3 -3
  40. package/dist/internals/{random-XGNkddOu.js.map → random-DBDmz54D.js.map} +1 -1
  41. package/dist/internals/{random-BjV_01xP.mjs → random-KZTFMK9-.mjs} +3 -3
  42. package/dist/internals/{random-BjV_01xP.mjs.map → random-KZTFMK9-.mjs.map} +1 -1
  43. package/package.json +2 -2
  44. package/dist/internals/index-BAB_APmb.d.ts +0 -116
  45. package/dist/internals/index-BAB_APmb.d.ts.map +0 -1
  46. package/dist/internals/index-CvfRsxEZ.d.ts.map +0 -1
  47. package/dist/internals/index-D4VXQ1FB.d.ts.map +0 -1
  48. package/dist/internals/index-DGau0Wqf.mjs.map +0 -1
  49. package/dist/internals/index-EOtjV6U_.mjs.map +0 -1
  50. package/dist/internals/index-tNCIyuCp.js.map +0 -1
package/dist/client.d.ts CHANGED
@@ -1,12 +1,10 @@
1
- import { P as ProtoClient } from './internals/index-BAB_APmb.js';
2
- export { c as classExtends, e as isFile, a as isObject, i as isQuery, d as isRole, b as isUser } from './internals/index-BAB_APmb.js';
1
+ import { P as ProtoClient } from './internals/index-CsRN32Jf.js';
2
+ export { c as classExtends, e as isFile, a as isObject, i as isQuery, d as isRole, b as isUser } from './internals/index-CsRN32Jf.js';
3
3
  export { Decimal } from 'decimal.js';
4
- export { D as DeserializeOptions, S as SerializeOptions, d as TSerializable, e as deserialize, s as serialize } from './internals/index-CvfRsxEZ.js';
4
+ export { D as DeserializeOptions, S as SerializeOptions, d as TSerializable, e as deserialize, s as serialize } from './internals/index-013pxZ3P.js';
5
5
  import '@o2ter/utils-js';
6
6
  import 'socket.io-client';
7
7
  import '@socket.io/component-emitter';
8
- import 'stream';
9
- import 'axios';
10
8
  import 'jsonwebtoken';
11
9
  import '@o2ter/server-js';
12
10
  import 'lodash';
package/dist/client.js CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./internals/index-tNCIyuCp.js');
5
+ var index = require('./internals/index-D1YGwuNK.js');
6
6
  var Decimal = require('decimal.js');
7
- require('./internals/index-C6zdNpc_.js');
7
+ require('./internals/index-CVutVPmd.js');
8
8
  require('lodash');
9
9
  require('./internals/private-CSB1Ep4g.js');
10
10
  require('@o2ter/utils-js');
package/dist/client.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { c as ProtoClient } from './internals/index-DGau0Wqf.mjs';
2
- export { e as classExtends, d as deserialize, j as isFile, f as isObject, i as isQuery, h as isRole, g as isUser, s as serialize } from './internals/index-DGau0Wqf.mjs';
1
+ import { c as ProtoClient } from './internals/index-c-CaNuVY.mjs';
2
+ export { e as classExtends, d as deserialize, j as isFile, f as isObject, i as isQuery, h as isRole, g as isUser, s as serialize } from './internals/index-c-CaNuVY.mjs';
3
3
  export { Decimal } from 'decimal.js';
4
- import './internals/index-EOtjV6U_.mjs';
4
+ import './internals/index-BmRuvHVZ.mjs';
5
5
  import 'lodash';
6
6
  import './internals/private-BUpLAMZi.mjs';
7
7
  import '@o2ter/utils-js';
package/dist/index.d.ts CHANGED
@@ -2,19 +2,17 @@ import * as socket_io from 'socket.io';
2
2
  import * as socket_io_dist_typed_events from 'socket.io/dist/typed-events';
3
3
  import * as express_serve_static_core from 'express-serve-static-core';
4
4
  import { Server, RequestHandler } from '@o2ter/server-js';
5
- import { T as TSchema, _ as _TValue, P as ProtoService, a as ProtoServiceOptions, b as ProtoServiceKeyOptions } from './internals/index-CvfRsxEZ.js';
6
- export { D as DeserializeOptions, S as SerializeOptions, c as TFileStorage, d as TSerializable, e as deserialize, s as serialize } from './internals/index-CvfRsxEZ.js';
5
+ import { T as TSchema, _ as _TValue, P as ProtoService, a as ProtoServiceOptions, b as ProtoServiceKeyOptions } from './internals/index-013pxZ3P.js';
6
+ export { D as DeserializeOptions, S as SerializeOptions, c as TFileStorage, d as TSerializable, e as deserialize, s as serialize } from './internals/index-013pxZ3P.js';
7
7
  import Decimal from 'decimal.js';
8
8
  export { Decimal } from 'decimal.js';
9
- export { P as ProtoClient, c as classExtends, e as isFile, a as isObject, i as isQuery, d as isRole, b as isUser } from './internals/index-BAB_APmb.js';
9
+ export { P as ProtoClient, c as classExtends, e as isFile, a as isObject, i as isQuery, d as isRole, b as isUser } from './internals/index-CsRN32Jf.js';
10
10
  import '@o2ter/utils-js';
11
11
  import 'jsonwebtoken';
12
12
  import 'lodash';
13
13
  import 'node:stream';
14
14
  import 'socket.io-client';
15
15
  import '@socket.io/component-emitter';
16
- import 'stream';
17
- import 'axios';
18
16
 
19
17
  declare const schema: ((x: Record<string, TSchema>) => Record<string, TSchema>) & {
20
18
  boolean: (defaultValue?: boolean) => {
package/dist/index.js CHANGED
@@ -4,18 +4,18 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _ = require('lodash');
6
6
  var serverJs = require('@o2ter/server-js');
7
- var random = require('./internals/random-XGNkddOu.js');
7
+ var random = require('./internals/random-DBDmz54D.js');
8
8
  var _private = require('./internals/private-CSB1Ep4g.js');
9
9
  var utilsJs = require('@o2ter/utils-js');
10
- var index = require('./internals/index-tNCIyuCp.js');
11
- var index$1 = require('./internals/index-C6zdNpc_.js');
10
+ var index = require('./internals/index-D1YGwuNK.js');
11
+ var index$1 = require('./internals/index-CVutVPmd.js');
12
12
  var jwt = require('jsonwebtoken');
13
13
  var node_buffer = require('node:buffer');
14
14
  var node_stream = require('node:stream');
15
15
  var node_crypto = require('node:crypto');
16
16
  var util = require('util');
17
17
  var cryptoJs = require('@o2ter/crypto-js');
18
- var index$2 = require('./internals/index-DZS2c96L.js');
18
+ var index$2 = require('./internals/index-CSNRyhjB.js');
19
19
  var queryType = require('query-types');
20
20
  var busboy = require('busboy');
21
21
  var Decimal = require('decimal.js');
@@ -138,12 +138,22 @@ const dispatcher = (proto, options, disableSecurity) => {
138
138
  const _matches = _validator.decodeMatches(options.className, options.matches ?? {}, _includes);
139
139
  if (!_validator.validateCLPs(options.className, 'create'))
140
140
  throw Error('No permission');
141
- return proto.storage.atomic((storage) => storage.insert({
142
- className: options.className,
143
- includes: _includes,
144
- matches: _matches,
145
- objectIdSize: proto[_private.PVK].options.objectIdSize
146
- }, normalize(_validator.validateFields(options.className, attrs, 'create', random.QueryValidator.patterns.name))), { lockTable: options.className });
141
+ const _attrs = normalize(_validator.validateFields(options.className, attrs, 'create', random.QueryValidator.patterns.path));
142
+ while (true) {
143
+ try {
144
+ return await proto.storage.atomic((storage) => storage.insert({
145
+ className: options.className,
146
+ includes: _includes,
147
+ matches: _matches,
148
+ objectIdSize: proto[_private.PVK].options.objectIdSize
149
+ }, _attrs), { lockTable: options.className, retry: true });
150
+ }
151
+ catch (e) {
152
+ if (proto.storage.isDuplicateIdError(e))
153
+ continue;
154
+ throw e;
155
+ }
156
+ }
147
157
  },
148
158
  async insertMany(options, values) {
149
159
  random.QueryValidator.recursiveCheck(values);
@@ -152,12 +162,22 @@ const dispatcher = (proto, options, disableSecurity) => {
152
162
  const _matches = _validator.decodeMatches(options.className, options.matches ?? {}, _includes);
153
163
  if (!_validator.validateCLPs(options.className, 'create'))
154
164
  throw Error('No permission');
155
- return proto.storage.atomic((storage) => storage.insertMany({
156
- className: options.className,
157
- includes: _includes,
158
- matches: _matches,
159
- objectIdSize: proto[_private.PVK].options.objectIdSize
160
- }, normalize(_.map(values, attr => _validator.validateFields(options.className, attr, 'create', random.QueryValidator.patterns.name)))), { lockTable: options.className });
165
+ const _attrs = normalize(_.map(values, attr => _validator.validateFields(options.className, attr, 'create', random.QueryValidator.patterns.path)));
166
+ while (true) {
167
+ try {
168
+ return await proto.storage.atomic((storage) => storage.insertMany({
169
+ className: options.className,
170
+ includes: _includes,
171
+ matches: _matches,
172
+ objectIdSize: proto[_private.PVK].options.objectIdSize
173
+ }, _attrs), { lockTable: options.className, retry: true });
174
+ }
175
+ catch (e) {
176
+ if (proto.storage.isDuplicateIdError(e))
177
+ continue;
178
+ throw e;
179
+ }
180
+ }
161
181
  },
162
182
  async updateOne(query, update) {
163
183
  random.QueryValidator.recursiveCheck(query, update);
@@ -171,7 +191,19 @@ const dispatcher = (proto, options, disableSecurity) => {
171
191
  const _validator = await validator();
172
192
  if (!_validator.validateCLPs(query.className, 'create', 'update'))
173
193
  throw Error('No permission');
174
- return proto.storage.atomic((storage) => storage.upsertOne(_validator.decodeQuery(normalize(query), 'update'), normalize(_validator.validateFields(query.className, update, 'update', random.QueryValidator.patterns.path)), normalize(_validator.validateFields(query.className, setOnInsert, 'create', random.QueryValidator.patterns.name))));
194
+ const _query = _validator.decodeQuery(normalize(query), 'update');
195
+ const _update = normalize(_validator.validateFields(query.className, update, 'update', random.QueryValidator.patterns.path));
196
+ const _setOnInsert = normalize(_validator.validateFields(query.className, setOnInsert, 'create', random.QueryValidator.patterns.name));
197
+ while (true) {
198
+ try {
199
+ return await proto.storage.atomic((storage) => storage.upsertOne(_query, _update, _setOnInsert), { lockTable: query.className, retry: true });
200
+ }
201
+ catch (e) {
202
+ if (proto.storage.isDuplicateIdError(e))
203
+ continue;
204
+ throw e;
205
+ }
206
+ }
175
207
  },
176
208
  async deleteOne(query) {
177
209
  random.QueryValidator.recursiveCheck(query);
@@ -333,7 +365,7 @@ class ProtoQuery extends index.TQuery {
333
365
  className: this.className,
334
366
  includes: this[_private.PVK].options.includes,
335
367
  matches: this[_private.PVK].options.matches,
336
- }, _.fromPairs([...object.entries()])));
368
+ }, _.fromPairs([...object._set_entries()])));
337
369
  if (!result)
338
370
  throw Error('Unable to insert document');
339
371
  if (_.isFunction(afterSave)) {
@@ -363,7 +395,7 @@ class ProtoQuery extends index.TQuery {
363
395
  className: this.className,
364
396
  includes: this[_private.PVK].options.includes,
365
397
  matches: this[_private.PVK].options.matches,
366
- }, _.map(objects, x => _.fromPairs([...x.entries()])));
398
+ }, _.map(objects, x => _.fromPairs([...x._set_entries()])));
367
399
  if (_.isFunction(afterSave)) {
368
400
  await Promise.all(_.map(objects, object => afterSave(proxy(Object.setPrototypeOf({ object, context }, options?.session ?? this._proto)))));
369
401
  }
@@ -920,7 +952,7 @@ class ProtoInternal {
920
952
  object.set('nonce', nonce);
921
953
  const created = await proto.Query('File')
922
954
  .includes(...object.keys())
923
- .insert(_.fromPairs([...object.entries()]), options);
955
+ .insert(_.fromPairs([...object._set_entries()]), options);
924
956
  if (created) {
925
957
  object[_private.PVK].attributes = created.attributes;
926
958
  object[_private.PVK].mutated = {};
@@ -1255,6 +1287,7 @@ const schedule = (proto) => {
1255
1287
  // THE SOFTWARE.
1256
1288
  //
1257
1289
  class ProtoService extends index.ProtoType {
1290
+ /** @internal */
1258
1291
  [_private.PVK];
1259
1292
  _storage;
1260
1293
  _schedule = schedule(this);