proto.io 0.0.146 → 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/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/filesystem.d.ts +2 -2
- package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
- package/dist/adapters/storage/progres.d.ts +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +31 -53
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +32 -54
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{index-bbPCIbir.d.ts → index-BAB_APmb.d.ts} +2 -2
- package/dist/internals/index-BAB_APmb.d.ts.map +1 -0
- package/dist/internals/{index-BWztjrw_.d.ts → index-CvfRsxEZ.d.ts} +6 -13
- package/dist/internals/index-CvfRsxEZ.d.ts.map +1 -0
- package/dist/internals/{index-BDB4idmt.d.ts → index-D4VXQ1FB.d.ts} +2 -2
- package/dist/internals/index-D4VXQ1FB.d.ts.map +1 -0
- package/dist/internals/{index-Do-zNOpD.mjs → index-DGau0Wqf.mjs} +19 -1
- package/dist/internals/index-DGau0Wqf.mjs.map +1 -0
- package/dist/internals/{index-CT01T3qs.js → index-tNCIyuCp.js} +19 -1
- package/dist/internals/index-tNCIyuCp.js.map +1 -0
- package/package.json +3 -3
- package/dist/internals/index-BDB4idmt.d.ts.map +0 -1
- package/dist/internals/index-BWztjrw_.d.ts.map +0 -1
- package/dist/internals/index-CT01T3qs.js.map +0 -1
- package/dist/internals/index-Do-zNOpD.mjs.map +0 -1
- package/dist/internals/index-bbPCIbir.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as TExtensions, g as TQuery, h as TObject, i as TUser, j as TRole, k as TFile, l as ProtoType, E as ExtraOptions, S as SerializeOptions, m as ProtoInternalType, d as TSerializable, n as TObjectType, _ as _TValue, T as TSchema, o as EventData, p as PVK } from './index-
|
|
1
|
+
import { f as TExtensions, g as TQuery, h as TObject, i as TUser, j as TRole, k as TFile, l as ProtoType, E as ExtraOptions, S as SerializeOptions, m as ProtoInternalType, d as TSerializable, n as TObjectType, _ as _TValue, T as TSchema, o as EventData, p as PVK } from './index-CvfRsxEZ.js';
|
|
2
2
|
import * as _o2ter_utils_js from '@o2ter/utils-js';
|
|
3
3
|
import * as socket_io_client from 'socket.io-client';
|
|
4
4
|
import { Socket } from 'socket.io-client';
|
|
@@ -113,4 +113,4 @@ declare class ProtoClient<Ext> extends ProtoType<Ext> {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
export { ProtoClient as P, isObject as a, isUser as b, classExtends as c, isRole as d, isFile as e, isQuery as i };
|
|
116
|
-
//# sourceMappingURL=index-
|
|
116
|
+
//# sourceMappingURL=index-BAB_APmb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BAB_APmb.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -255,6 +255,9 @@ declare abstract class TQuery<T extends string, Ext, M extends boolean, P extend
|
|
|
255
255
|
eachBatch(callback: (batch: TObjectType<T, Ext>[]) => Awaitable<void>, options?: ExtraOptions<M, P> & {
|
|
256
256
|
batchSize?: number;
|
|
257
257
|
}): Promise<void>;
|
|
258
|
+
each(callback: (object: TObjectType<T, Ext>) => Awaitable<void>, options?: ExtraOptions<M, P> & {
|
|
259
|
+
batchSize?: number;
|
|
260
|
+
}): Promise<void>;
|
|
258
261
|
}
|
|
259
262
|
|
|
260
263
|
type Callback<T, R, E> = (request: ProtoService<E> & T) => Awaitable<R>;
|
|
@@ -355,10 +358,6 @@ interface ProtoType<Ext> {
|
|
|
355
358
|
afterSave<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
356
359
|
beforeDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
357
360
|
afterDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
358
|
-
beforeSaveFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
359
|
-
afterSaveFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
360
|
-
beforeDeleteFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
361
|
-
afterDeleteFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
362
361
|
lockTable(className: string | string[], update: boolean): void;
|
|
363
362
|
withTransaction<T>(callback: (connection: ProtoType<Ext>) => PromiseLike<T>, options?: TransactionOptions): void;
|
|
364
363
|
generateUploadToken(options?: {
|
|
@@ -368,9 +367,11 @@ interface ProtoType<Ext> {
|
|
|
368
367
|
jwtVarify(token: string, options?: jwt.VerifyOptions): jwt.JwtPayload | undefined;
|
|
369
368
|
}
|
|
370
369
|
|
|
370
|
+
type TriggerType = 'beforeSave' | 'afterSave' | 'beforeDelete' | 'afterDelete';
|
|
371
371
|
type ExtraOptions<M extends boolean, P extends ProtoType<any>> = {
|
|
372
372
|
master?: M;
|
|
373
373
|
context?: TSerializable;
|
|
374
|
+
silent?: TriggerType | TriggerType[];
|
|
374
375
|
session?: P;
|
|
375
376
|
abortSignal?: AbortSignal;
|
|
376
377
|
};
|
|
@@ -649,10 +650,6 @@ declare class ProtoInternal<Ext, P extends ProtoService<Ext>> implements ProtoIn
|
|
|
649
650
|
afterSave?: Record<string, ProtoTrigger<string, Ext>>;
|
|
650
651
|
beforeDelete?: Record<string, ProtoTrigger<string, Ext>>;
|
|
651
652
|
afterDelete?: Record<string, ProtoTrigger<string, Ext>>;
|
|
652
|
-
beforeSaveFile?: ProtoTrigger<'File', Ext>;
|
|
653
|
-
afterSaveFile?: ProtoTrigger<'File', Ext>;
|
|
654
|
-
beforeDeleteFile?: ProtoTrigger<'File', Ext>;
|
|
655
|
-
afterDeleteFile?: ProtoTrigger<'File', Ext>;
|
|
656
653
|
};
|
|
657
654
|
constructor(options: Required<ProtoServiceOptions<Ext>> & ProtoServiceKeyOptions);
|
|
658
655
|
prepare(): Promise<void>;
|
|
@@ -759,10 +756,6 @@ declare class ProtoService<Ext> extends ProtoType<Ext> {
|
|
|
759
756
|
afterSave<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
760
757
|
beforeDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
761
758
|
afterDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;
|
|
762
|
-
beforeSaveFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
763
|
-
afterSaveFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
764
|
-
beforeDeleteFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
765
|
-
afterDeleteFile(callback: ProtoTrigger<'File', Ext>): void;
|
|
766
759
|
lockTable(className: string | string[], update: boolean): Promise<void>;
|
|
767
760
|
withTransaction<T>(callback: (connection: ProtoService<Ext>) => PromiseLike<T>, options?: TransactionOptions): PromiseLike<T>;
|
|
768
761
|
generateUploadToken(options?: {
|
|
@@ -781,4 +774,4 @@ declare class ProtoService<Ext> extends ProtoType<Ext> {
|
|
|
781
774
|
}
|
|
782
775
|
|
|
783
776
|
export { type TQueryRandomOptions as A, type TPubSub as B, type TFileInfo as C, type DeserializeOptions as D, type ExtraOptions as E, type FindOptions as F, type InsertOptions as I, ProtoService as P, QuerySelector as Q, type SerializeOptions as S, TSchema as T, type _TValue as _, type ProtoServiceOptions as a, type ProtoServiceKeyOptions as b, type TFileStorage as c, type TSerializable as d, deserialize as e, type TExtensions as f, TQuery as g, TObject as h, TUser as i, TRole as j, TFile as k, ProtoType as l, type ProtoInternalType as m, type TObjectType as n, type EventData as o, PVK as p, type DecodedQuery as q, type DecodedSortOption as r, serialize as s, type TValue as t, type FindOneOptions as u, type TUpdateOp as v, FieldSelectorExpression as w, QueryExpression as x, type TStorage as y, type TransactionOptions as z };
|
|
784
|
-
//# sourceMappingURL=index-
|
|
777
|
+
//# sourceMappingURL=index-CvfRsxEZ.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CvfRsxEZ.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as TFileStorage, T as TSchema, P as ProtoService, C as TFileInfo } from './index-
|
|
1
|
+
import { c as TFileStorage, T as TSchema, P as ProtoService, C as TFileInfo } from './index-CvfRsxEZ.js';
|
|
2
2
|
|
|
3
3
|
type FileStorageOptions = {
|
|
4
4
|
chunkSize?: number;
|
|
@@ -22,4 +22,4 @@ declare abstract class FileStorageBase implements TFileStorage {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export { FileStorageBase as F, type FileStorageOptions as a };
|
|
25
|
-
//# sourceMappingURL=index-
|
|
25
|
+
//# sourceMappingURL=index-D4VXQ1FB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D4VXQ1FB.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -277,6 +277,13 @@ class TQuery extends TQueryBase {
|
|
|
277
277
|
await callback(batch);
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
|
+
async each(callback, options) {
|
|
281
|
+
await this.eachBatch(async (batch) => {
|
|
282
|
+
for (const object of batch) {
|
|
283
|
+
await callback(object);
|
|
284
|
+
}
|
|
285
|
+
}, options);
|
|
286
|
+
}
|
|
280
287
|
}
|
|
281
288
|
|
|
282
289
|
//
|
|
@@ -871,6 +878,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
871
878
|
return this._proto[PVK].request(this._proto, {
|
|
872
879
|
operation: 'explain',
|
|
873
880
|
context: options?.context ?? {},
|
|
881
|
+
silent: options?.silent,
|
|
874
882
|
...this._queryOptions,
|
|
875
883
|
}, this._requestOpt(options));
|
|
876
884
|
}
|
|
@@ -878,6 +886,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
878
886
|
return this._proto[PVK].request(this._proto, {
|
|
879
887
|
operation: 'count',
|
|
880
888
|
context: options?.context ?? {},
|
|
889
|
+
silent: options?.silent,
|
|
881
890
|
...this._queryOptions,
|
|
882
891
|
}, this._requestOpt(options));
|
|
883
892
|
}
|
|
@@ -885,6 +894,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
885
894
|
const request = () => this._proto[PVK].request(this._proto, {
|
|
886
895
|
operation: 'find',
|
|
887
896
|
context: options?.context ?? {},
|
|
897
|
+
silent: options?.silent,
|
|
888
898
|
...this._queryOptions,
|
|
889
899
|
}, this._requestOpt(options));
|
|
890
900
|
return asyncStream(request);
|
|
@@ -893,6 +903,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
893
903
|
const request = () => this._proto[PVK].request(this._proto, {
|
|
894
904
|
operation: 'random',
|
|
895
905
|
context: options?.context ?? {},
|
|
906
|
+
silent: options?.silent,
|
|
896
907
|
random: opts,
|
|
897
908
|
...this._queryOptions,
|
|
898
909
|
}, this._requestOpt(options));
|
|
@@ -902,6 +913,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
902
913
|
const request = () => this._proto[PVK].request(this._proto, {
|
|
903
914
|
operation: 'nonrefs',
|
|
904
915
|
context: options?.context ?? {},
|
|
916
|
+
silent: options?.silent,
|
|
905
917
|
...this._queryOptions,
|
|
906
918
|
}, this._requestOpt(options));
|
|
907
919
|
return asyncStream(request);
|
|
@@ -910,6 +922,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
910
922
|
return this._proto[PVK].request(this._proto, {
|
|
911
923
|
operation: 'insert',
|
|
912
924
|
context: options?.context ?? {},
|
|
925
|
+
silent: options?.silent,
|
|
913
926
|
attributes: attrs,
|
|
914
927
|
...this._queryOptions,
|
|
915
928
|
}, this._requestOpt(options));
|
|
@@ -918,6 +931,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
918
931
|
return this._proto[PVK].request(this._proto, {
|
|
919
932
|
operation: 'insertMany',
|
|
920
933
|
context: options?.context ?? {},
|
|
934
|
+
silent: options?.silent,
|
|
921
935
|
attributes: values,
|
|
922
936
|
...this._queryOptions,
|
|
923
937
|
}, this._requestOpt(options));
|
|
@@ -926,6 +940,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
926
940
|
return this._proto[PVK].request(this._proto, {
|
|
927
941
|
operation: 'updateOne',
|
|
928
942
|
context: options?.context ?? {},
|
|
943
|
+
silent: options?.silent,
|
|
929
944
|
update,
|
|
930
945
|
...this._queryOptions,
|
|
931
946
|
}, this._requestOpt(options));
|
|
@@ -934,6 +949,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
934
949
|
return this._proto[PVK].request(this._proto, {
|
|
935
950
|
operation: 'upsertOne',
|
|
936
951
|
context: options?.context ?? {},
|
|
952
|
+
silent: options?.silent,
|
|
937
953
|
update,
|
|
938
954
|
setOnInsert,
|
|
939
955
|
...this._queryOptions,
|
|
@@ -943,6 +959,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
943
959
|
return this._proto[PVK].request(this._proto, {
|
|
944
960
|
operation: 'deleteOne',
|
|
945
961
|
context: options?.context ?? {},
|
|
962
|
+
silent: options?.silent,
|
|
946
963
|
...this._queryOptions,
|
|
947
964
|
}, this._requestOpt(options));
|
|
948
965
|
}
|
|
@@ -950,6 +967,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
950
967
|
return this._proto[PVK].request(this._proto, {
|
|
951
968
|
operation: 'deleteMany',
|
|
952
969
|
context: options?.context ?? {},
|
|
970
|
+
silent: options?.silent,
|
|
953
971
|
...this._queryOptions,
|
|
954
972
|
}, this._requestOpt(options));
|
|
955
973
|
}
|
|
@@ -1463,4 +1481,4 @@ class ProtoClient extends ProtoType {
|
|
|
1463
1481
|
}
|
|
1464
1482
|
|
|
1465
1483
|
export { AUTH_COOKIE_KEY as A, MASTER_USER_HEADER_NAME as M, ProtoType as P, TQuery as T, UPLOAD_TOKEN_HEADER_NAME as U, MASTER_PASS_HEADER_NAME as a, TUser as b, ProtoClient as c, deserialize as d, classExtends as e, isObject as f, isUser as g, isRole as h, isQuery as i, isFile as j, serialize as s };
|
|
1466
|
-
//# sourceMappingURL=index-
|
|
1484
|
+
//# sourceMappingURL=index-DGau0Wqf.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DGau0Wqf.mjs","sources":["../../../src/internals/query/base.ts","../../../src/internals/query/index.ts","../../../src/internals/const.ts","../../../src/internals/object/user.ts","../../../src/internals/object/role.ts","../../../src/internals/object/file.ts","../../../src/internals/object/types.ts","../../../src/internals/utils.ts","../../../src/internals/object/methods.ts","../../../src/internals/proto/index.ts","../../../src/common/codec.ts","../../../src/common/index.ts","../../../src/client/query.ts","../../../src/client/request.ts","../../../src/client/proto/internal.ts","../../../src/client/proto/index.ts"],"sourcesContent":["//\n// base.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { PathName, PathNameMap } from './types';\nimport { TQuerySelector } from './types/selectors';\nimport { TValue } from '../types';\nimport { PVK } from '../private';\nimport { TExpression } from './types/expressions';\n\ninterface TQueryFilterBaseOptions {\n filter?: TQuerySelector | TQuerySelector[];\n};\n\nexport type TSortOption = {\n expr: TExpression;\n order: 1 | -1;\n};\n\nexport interface TQueryBaseOptions extends TQueryFilterBaseOptions {\n sort?: Record<string, 1 | -1> | TSortOption[];\n skip?: number;\n limit?: number;\n matches?: Record<string, TQueryBaseOptions>;\n};\n\nconst mergeOpts = (lhs: TQueryBaseOptions, rhs: TQueryBaseOptions): TQueryBaseOptions => {\n return {\n ...lhs,\n ...rhs,\n filter: [\n ..._.castArray<TQuerySelector>(lhs.filter),\n ..._.castArray<TQuerySelector>(rhs.filter)\n ],\n matches: {\n ...lhs.matches,\n ..._.mapValues(rhs.matches, (opts, key) => lhs.matches?.[key] ? mergeOpts(lhs.matches[key], opts) : opts),\n },\n };\n}\n\nclass TQueryFilterBase {\n\n [PVK]: { options: TQueryFilterBaseOptions; } = { options: {} };\n\n filter(filter: TQuerySelector) {\n if (_.isNil(this[PVK].options.filter)) {\n this[PVK].options.filter = filter;\n } else if (_.isArray(this[PVK].options.filter)) {\n this[PVK].options.filter = [...this[PVK].options.filter, filter];\n } else {\n this[PVK].options.filter = [this[PVK].options.filter, filter];\n }\n return this;\n }\n\n equalTo<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $eq: value ?? null } });\n }\n\n notEqualTo<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $ne: value ?? null } });\n }\n\n lessThan<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $lt: value ?? null } });\n }\n\n greaterThan<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $gt: value ?? null } });\n }\n\n lessThanOrEqualTo<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $lte: value ?? null } });\n }\n\n greaterThanOrEqualTo<T extends string>(key: PathName<T>, value: TValue | undefined) {\n return this.filter({ [key]: { $gte: value ?? null } });\n }\n\n pattern<T extends string>(key: PathName<T>, value: RegExp | string) {\n return this.filter({ [key]: { $pattern: value ?? null } });\n }\n\n startsWith<T extends string>(key: PathName<T>, value: string) {\n return this.filter({ [key]: { $starts: value ?? null } });\n }\n\n endsWith<T extends string>(key: PathName<T>, value: string) {\n return this.filter({ [key]: { $ends: value ?? null } });\n }\n\n size<T extends string>(key: PathName<T>, value: number) {\n return this.filter({ [key]: { $size: value } });\n }\n\n empty<T extends string>(key: PathName<T>) {\n return this.filter({ [key]: { $empty: true } });\n }\n\n notEmpty<T extends string>(key: PathName<T>) {\n return this.filter({ [key]: { $empty: false } });\n }\n\n containsIn<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $in: value } });\n }\n\n notContainsIn<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $nin: value } });\n }\n\n isSubset<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $subset: value } });\n }\n\n isSuperset<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $superset: value } });\n }\n\n isDisjoint<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $disjoint: value } });\n }\n\n isIntersect<T extends string>(key: PathName<T>, value: TValue[]) {\n return this.filter({ [key]: { $intersect: value } });\n }\n\n every<T extends string>(key: PathName<T>, callback: (query: TQueryFilterBase) => void) {\n const query = new TQueryFilterBase();\n callback(query);\n return this.filter({ [key]: { $every: { $and: _.castArray<TQuerySelector>(query[PVK].options.filter) } } });\n }\n\n some<T extends string>(key: PathName<T>, callback: (query: TQueryFilterBase) => void) {\n const query = new TQueryFilterBase();\n callback(query);\n return this.filter({ [key]: { $some: { $and: _.castArray<TQuerySelector>(query[PVK].options.filter) } } });\n }\n\n and(...callbacks: ((query: TQueryFilterBase) => void)[]) {\n return this.filter({\n $and: _.flatMap(callbacks, callback => {\n const query = new TQueryFilterBase();\n callback(query);\n return _.castArray<TQuerySelector>(query[PVK].options.filter);\n }),\n });\n }\n\n or(...callbacks: ((query: TQueryFilterBase) => void)[]) {\n return this.filter({\n $or: _.map(callbacks, callback => {\n const query = new TQueryFilterBase();\n callback(query);\n return {\n $and: _.castArray<TQuerySelector>(query[PVK].options.filter),\n };\n }),\n });\n }\n\n nor(...callbacks: ((query: TQueryFilterBase) => void)[]) {\n return this.filter({\n $nor: _.map(callbacks, callback => {\n const query = new TQueryFilterBase();\n callback(query);\n return {\n $and: _.castArray<TQuerySelector>(query[PVK].options.filter),\n };\n }),\n });\n }\n}\n\nexport class TQueryBase extends TQueryFilterBase {\n\n [PVK]: { options: TQueryBaseOptions; } = { options: {} };\n\n sort<T extends Record<string, 1 | -1>>(sort: PathNameMap<T> | TSortOption[]) {\n this[PVK].options.sort = sort;\n return this;\n }\n\n skip(skip: number) {\n if (!_.isSafeInteger(skip) || skip < 0) throw Error('Invalid skip number');\n this[PVK].options.skip = skip;\n return this;\n }\n\n limit(limit: number) {\n if (!_.isSafeInteger(limit) || limit < 0) throw Error('Invalid limit number');\n this[PVK].options.limit = limit;\n return this;\n }\n\n match<T extends string>(key: PathName<T>, callback: (query: TQueryBase) => void) {\n const query = new TQueryBase();\n callback(query);\n if (_.isNil(this[PVK].options.matches)) {\n this[PVK].options.matches = { [key]: query[PVK].options };\n } else if (_.isNil(this[PVK].options.matches[key])) {\n this[PVK].options.matches = { ...this[PVK].options.matches };\n this[PVK].options.matches[key] = query[PVK].options;\n } else {\n this[PVK].options.matches = { ...this[PVK].options.matches };\n this[PVK].options.matches[key] = mergeOpts(this[PVK].options.matches[key], query[PVK].options);\n }\n return this;\n }\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { IncludePaths } from './types';\nimport { TValue } from '../types';\nimport { PVK } from '../private';\nimport { TObjectType } from '../object/types';\nimport { TQueryBase, TQueryBaseOptions } from './base';\nimport { TUpdateOp } from '../object/types';\nimport { ProtoType } from '../proto';\nimport { ExtraOptions } from '../options';\nimport { asyncStream, Awaitable } from '@o2ter/utils-js';\n\nexport interface TQueryOptions extends TQueryBaseOptions {\n includes?: string[];\n};\n\nexport interface TQueryRandomOptions {\n weight?: string;\n};\n\nexport abstract class TQuery<\n T extends string, Ext,\n M extends boolean,\n P extends ProtoType<any>\n> extends TQueryBase {\n\n [PVK]: {\n className: T;\n options: TQueryOptions;\n }\n\n constructor(className: T, options: TQueryOptions = {}) {\n super();\n this[PVK] = {\n className,\n options,\n };\n }\n\n get className(): T {\n return this[PVK].className;\n }\n\n abstract clone(options?: TQueryOptions): TQuery<T, Ext, M, P>;\n abstract explain(options?: ExtraOptions<M, P>): PromiseLike<any>;\n abstract count(options?: ExtraOptions<M, P>): PromiseLike<number>;\n abstract find(options?: ExtraOptions<M, P>): ReturnType<typeof asyncStream<TObjectType<T, Ext>>>;\n abstract random(\n opts?: TQueryRandomOptions,\n options?: ExtraOptions<M, P>\n ): ReturnType<typeof asyncStream<TObjectType<T, Ext>>>;\n abstract nonrefs(options?: ExtraOptions<M, P>): ReturnType<typeof asyncStream<TObjectType<T, Ext>>>;\n abstract insert(\n attrs: Record<string, TValue>,\n options?: ExtraOptions<M, P>\n ): PromiseLike<TObjectType<T, Ext>>;\n abstract insertMany(\n values: Record<string, TValue>[],\n options?: ExtraOptions<M, P>\n ): PromiseLike<number>;\n abstract updateOne(\n update: Record<string, TUpdateOp>,\n options?: ExtraOptions<M, P>\n ): PromiseLike<TObjectType<T, Ext> | undefined>;\n abstract upsertOne(\n update: Record<string, TUpdateOp>,\n setOnInsert: Record<string, TValue>,\n options?: ExtraOptions<M, P>\n ): PromiseLike<TObjectType<T, Ext>>;\n abstract deleteOne(options?: ExtraOptions<M, P>): PromiseLike<TObjectType<T, Ext> | undefined>;\n abstract deleteMany(options?: ExtraOptions<M, P>): PromiseLike<number>;\n\n includes<T extends string[]>(...includes: IncludePaths<T>) {\n this[PVK].options.includes = this[PVK].options.includes ? [...this[PVK].options.includes, ...includes] : includes;\n return this;\n }\n\n async get(id: string, options?: ExtraOptions<M, P>) {\n return _.first(await this.clone().equalTo('_id', id).limit(1).find(options));\n }\n\n async first(options?: ExtraOptions<M, P>) {\n return _.first(await this.clone().limit(1).find(options));\n }\n\n async randomOne(opts?: TQueryRandomOptions, options?: ExtraOptions<M, P>) {\n return _.first(await this.clone().limit(1).random(opts, options));\n }\n\n async exists(options?: ExtraOptions<M, P>) {\n const query = this.clone();\n this[PVK].options.includes = [];\n return !_.isNil(await query.limit(1).find(options));\n }\n\n async eachBatch(\n callback: (batch: TObjectType<T, Ext>[]) => Awaitable<void>,\n options?: ExtraOptions<M, P> & { batchSize?: number; },\n ) {\n const sorting = this[PVK].options.sort as Record<string, 1 | -1> ?? {};\n const batchSize = options?.batchSize ?? 100;\n if (!_.isPlainObject(sorting)) throw Error('Unsupported sort method');\n const is_asc = _.every(sorting, v => v === 1);\n const is_desc = _.every(sorting, v => v === -1);\n if (!is_asc && !is_desc) throw Error('Unsupported sort method');\n if (_.isNil(sorting._id)) sorting._id = is_asc ? 1 : -1;\n const query = this.clone().sort(sorting).limit(batchSize);\n const keys = _.keys(sorting);\n let batch: TObjectType<T, Ext>[] = [];\n while (true) {\n const q = _.isEmpty(batch) ? query : query.clone()\n .filter(keys.length > 1 ? {\n $expr: {\n [is_asc ? '$gt' : '$lt']: [\n { $array: _.map(keys, k => ({ $key: k })) },\n { $array: _.map(keys, k => ({ $value: _.last(batch)!.get(k) })) },\n ],\n },\n } : {\n [keys[0]]: { [is_asc ? '$gt' : '$lt']: _.last(batch)!.get(keys[0]) },\n });\n batch = await q.find(options);\n if (_.isEmpty(batch)) return;\n await callback(batch);\n }\n }\n\n async each(\n callback: (object: TObjectType<T, Ext>) => Awaitable<void>,\n options?: ExtraOptions<M, P> & { batchSize?: number; },\n ) {\n await this.eachBatch(async (batch) => {\n for (const object of batch) {\n await callback(object);\n }\n }, options);\n }\n};\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nexport const MASTER_USER_HEADER_NAME = 'X-PROTO-MASTER-USER';\nexport const MASTER_PASS_HEADER_NAME = 'X-PROTO-MASTER-PASS';\n\nexport const UPLOAD_TOKEN_HEADER_NAME = 'X-PROTO-UPLOAD-TOKEN';\n\nexport const AUTH_COOKIE_KEY = 'x-proto-auth';\n","//\n// user.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TObject } from './index';\nimport { TValue } from '../types';\n\nexport class TUser extends TObject {\n\n constructor(\n attributes?: Record<string, TValue> | ((self: TObject) => Record<string, TValue>),\n ) {\n super('User', attributes);\n }\n}","//\n// role.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TObject } from './index';\nimport { TValue } from '../types';\nimport { TUser } from './user';\n\nexport class TRole extends TObject {\n\n constructor(\n attributes?: Record<string, TValue> | ((self: TObject) => Record<string, TValue>),\n ) {\n super('Role', attributes);\n }\n\n get name(): string | undefined {\n return this.get('name');\n }\n\n get users(): TUser[] {\n return this.get('users') ?? [];\n }\n\n set users(value: TUser[]) {\n this.set('users', value);\n }\n\n get roles(): TRole[] {\n return this.get('roles') ?? [];\n }\n\n set roles(value: TRole[]) {\n this.set('roles', value);\n }\n}","//\n// file.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TObject } from './index';\nimport { ExtraOptions } from '../options';\nimport { FileStream } from '../buffer';\nimport { TValue } from '../types';\nimport { ProtoType } from '../proto';\n\nexport interface TFile {\n url: string | undefined;\n fileData(options?: ExtraOptions<boolean, ProtoType<any>>): FileStream;\n save(options?: ExtraOptions<boolean, ProtoType<any>> & {\n cascadeSave?: boolean;\n uploadToken?: string;\n }): PromiseLike<this>;\n}\n\nexport class TFile extends TObject {\n\n constructor(\n attributes?: Record<string, TValue> | ((self: TObject) => Record<string, TValue>),\n ) {\n super('File', attributes);\n }\n\n get filename(): string | undefined {\n return this.get('filename');\n }\n\n get size(): number | undefined {\n return this.get('size');\n }\n\n get type(): string | undefined {\n return this.get('type');\n }\n\n get token(): string | undefined {\n return this.get('token');\n }\n\n}\n","//\n// types.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TObject } from './index';\nimport { TUser } from './user';\nimport { TRole } from './role';\nimport { TFile } from './file';\nimport { TValue } from '../types';\nimport { ExactOneProp } from '../types';\n\nexport const TObjectTypes = {\n 'User': TUser,\n 'Role': TRole,\n 'File': TFile,\n};\n\ntype _TObjectType<K> = K extends keyof typeof TObjectTypes ? InstanceType<(typeof TObjectTypes)[K]> : TObject;\n\ntype PickBy<T, C> = {\n [P in keyof T as T[P] extends C ? P : never]: T[P];\n}\n\ntype PropertyDescriptor<T> = {\n enumerable?: boolean;\n get: () => T;\n set?: (value: T) => void;\n};\ntype ReadOnlyProperty<T> = Pick<PropertyDescriptor<T>, 'get'>;\ntype ReadWriteProperty<T> = Required<Pick<PropertyDescriptor<T>, 'get' | 'set'>>;\n\ntype PropertyMapToMethods<T> = PickBy<T, Function> &\n { [P in keyof PickBy<T, ReadWriteProperty<any>>]: T[P] extends PropertyDescriptor<infer V> ? V : never; } &\n { readonly [P in keyof PickBy<T, ReadOnlyProperty<any>>]: T[P] extends PropertyDescriptor<infer V> ? V : never; }\ntype Property<T> = T extends Function ? T | PropertyDescriptor<T> : PropertyDescriptor<T>;\ntype PropertyMap<T, O, A> = {\n [K in keyof T]: T[K] extends Property<any> ? T[K] : never;\n} & ThisType<O & PropertyMapToMethods<T> & PropertyMapToMethods<A>>;\n\nexport type TExtensions<E> = {\n [K in keyof E]: PropertyMap<E[K], _TObjectType<K>, '*' extends keyof E ? Omit<E['*'], keyof E[K]> : {}>;\n};\n\ntype TMethods<K, E> = K extends keyof E\n ? '*' extends keyof E ? PropertyMapToMethods<Omit<E['*'], keyof E[K]> & E[K]> : PropertyMapToMethods<E[K]>\n : {};\nexport type TObjectType<K, E> = _TObjectType<K> & TMethods<K, E>;\n\nexport const TUpdateOpKeys = [\n '$set',\n '$inc',\n '$dec',\n '$mul',\n '$div',\n '$max',\n '$min',\n '$addToSet',\n '$push',\n '$removeAll',\n '$popFirst',\n '$popLast',\n] as const;\n\nexport type TUpdateOp = ExactOneProp<Record<(typeof TUpdateOpKeys)[number], TValue>>;\n","//\n// utils.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\n\nexport const isObjKey = <T extends object>(key: PropertyKey, obj: T): key is keyof T => key in obj;\n","//\n// methods.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TObject, decodeUpdateOp } from './index';\nimport { PVK } from '../private';\nimport { ExtraOptions } from '../options';\nimport { TExtensions, TObjectType, TObjectTypes } from './types';\nimport { ProtoType } from '../proto';\nimport { TSerializable } from '../../common/codec';\nimport { TFile } from './file';\nimport { isObjKey } from '../utils';\n\nexport type TExtended<U, T extends string, E> = U extends TObject ?\n TObjectType<T, E> : U extends (infer U)[] ?\n TExtended<U, T, E>[] : U;\n\nexport const applyObjectMethods = <T extends TSerializable, E>(\n object: T,\n proto: ProtoType<E>,\n): T => {\n\n if (!(object instanceof TObject)) {\n if (_.isArray(object)) return _.map(object, x => applyObjectMethods(x, proto)) as T;\n if (_.isPlainObject(object)) return _.mapValues(object as any, x => applyObjectMethods(x, proto));\n return object;\n }\n\n object[PVK].attributes = _.mapValues(object[PVK].attributes, x => applyObjectMethods(x, proto));\n\n const className = object.className;\n const _class = isObjKey(className, TObjectTypes) ? TObjectTypes[className] : undefined;\n if (_class && Object.getPrototypeOf(object) !== _class.prototype) {\n Object.setPrototypeOf(object, _class.prototype);\n }\n\n const classExtends = proto[PVK].options.classExtends ?? {} as TExtensions<E>;\n const extensions = {\n ...classExtends['*' as keyof E] ?? {},\n ...classExtends[className as keyof E] ?? {},\n };\n const query = () => proto.Query(className);\n\n const typedMethods: Record<string, PropertyDescriptorMap & ThisType<TObject>> = {\n 'File': {\n save: {\n value(options?: ExtraOptions<boolean, ProtoType<E>>) {\n return proto[PVK].saveFile(proto, this as TFile, options);\n },\n },\n destroy: {\n value(options?: ExtraOptions<boolean, ProtoType<E>>) {\n return proto[PVK].deleteFile(proto, this as TFile, options);\n },\n },\n url: {\n get() {\n const filename = (this as TFile).filename;\n if (_.isNil(this.objectId) || _.isNil(filename)) return;\n const endpoint = proto[PVK].options.endpoint;\n const path = `files/${this.objectId}/${encodeURIComponent(filename)}`;\n return endpoint.endsWith('/') ? `${endpoint}${path}` : `${endpoint}/${path}`;\n }\n },\n fileData: {\n value(options?: ExtraOptions<boolean, ProtoType<E>>) {\n return proto[PVK].fileData(proto, this as TFile, options);\n },\n },\n },\n };\n\n const props: PropertyDescriptorMap & ThisType<TObject> = {\n clone: {\n value() {\n const clone = proto.Object(this.className);\n clone[PVK].attributes = { ...this[PVK].attributes };\n clone[PVK].mutated = { ...this[PVK].mutated };\n clone[PVK].extra = { ...this[PVK].extra };\n return clone;\n }\n },\n fetchWithInclude: {\n async value(keys: string[], options?: ExtraOptions<boolean, ProtoType<E>>) {\n const fetched = await query().equalTo('_id', this.objectId).includes(...keys).first(options);\n if (!fetched) throw Error('Unable to fetch document');\n this[PVK].attributes = fetched.attributes;\n return this;\n },\n },\n save: {\n async value(options?: ExtraOptions<boolean, ProtoType<E>> & { cascadeSave?: boolean }) {\n const mutated = _.values(this[PVK].mutated);\n if (options?.cascadeSave !== false) {\n for (const update of _.values(mutated)) {\n const [, value] = decodeUpdateOp(update);\n if (value instanceof TObject && (_.isNil(value.objectId) || value.isDirty)) await value.save(options);\n }\n }\n if (this.objectId) {\n const updated = await query()\n .equalTo('_id', this.objectId)\n .includes(...this.keys())\n .updateOne(this[PVK].mutated, options);\n if (!updated) throw Error('Unable to save document');\n this[PVK].attributes = updated.attributes;\n this[PVK].mutated = {};\n } else {\n const created = await query()\n .includes(...this.keys())\n .insert(_.fromPairs([...this.entries()]), options);\n this[PVK].attributes = created.attributes;\n this[PVK].mutated = {};\n }\n return this;\n },\n },\n destroy: {\n async value(options?: ExtraOptions<boolean, ProtoType<E>>) {\n const deleted = await query()\n .equalTo('_id', this.objectId)\n .includes(...this.keys())\n .deleteOne(options);\n if (!deleted) throw Error('Unable to destroy document');\n this[PVK].attributes = deleted.attributes;\n this[PVK].mutated = {};\n return this;\n },\n },\n ...typedMethods[className] ?? {},\n ..._.mapValues(extensions, value => _.isFunction(value) ? { value } : value),\n };\n\n const _props = _.pickBy(props, (_v, k) => !Object.hasOwn(object, k)) as typeof props;\n return Object.defineProperties(object, _props);\n};\n","//\n// proto.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport axios from 'axios';\nimport { PVK } from '../private';\nimport type jwt from 'jsonwebtoken';\nimport type { CookieOptions, Request } from '@o2ter/server-js';\nimport type { SignOptions } from 'jsonwebtoken';\nimport { ExtraOptions } from '../options';\nimport { TQuery } from '../query';\nimport { TExtensions, TObjectType, TObjectTypes } from '../object/types';\nimport { TFile } from '../object/file';\nimport { FileData, FileStream } from '../buffer';\nimport { isObjKey } from '../utils';\nimport { applyObjectMethods } from '../object/methods';\nimport { TValue, _TValue } from '../types';\nimport { TObject } from '../object';\nimport { TSerializable } from '../../common/codec';\nimport { TUser } from '../object/user';\nimport { ProtoFunction, ProtoFunctionOptions, ProtoTrigger } from './types';\nimport { Socket } from 'socket.io-client';\nimport { Session } from '../../server/proto/session';\nimport { asyncStream } from '@o2ter/utils-js';\n\nexport type TransactionMode = 'default' | 'committed' | 'repeatable' | 'serializable';\n\nexport type TransactionOptions = {\n mode?: TransactionMode;\n retry?: number | boolean;\n};\n\nexport type EventData = Record<string, _TValue> & {\n _id: string,\n _created_at: Date,\n _rperm: string[],\n};\n\nexport interface ProtoInternalType<Ext, P extends ProtoType<any>> {\n\n options: {\n endpoint: string;\n classExtends?: TExtensions<Ext>;\n };\n\n saveFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;\n deleteFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;\n\n fileData(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): FileStream;\n}\n\nexport abstract class ProtoType<Ext> {\n\n abstract [PVK]: ProtoInternalType<Ext, this>;\n\n abstract config(options?: { master?: boolean; }): Promise<Record<string, _TValue>>;\n abstract configAcl(options: { master: true; }): PromiseLike<Record<string, string[]>>;\n abstract setConfig(values: Record<string, _TValue>, options: { master: true; acl?: string[]; }): Promise<void>;\n\n abstract run(name: string, data?: TSerializable, options?: ExtraOptions<boolean, this>): Promise<void | TSerializable>\n abstract Query<T extends string>(className: T): TQuery<T, Ext, boolean, this>;\n\n abstract refs(object: TObject, options?: ExtraOptions<boolean, this>): ReturnType<typeof asyncStream<TObjectType<string, Ext>>>;\n\n async online() {\n try {\n const res = await axios({\n method: 'get',\n baseURL: this[PVK].options.endpoint,\n url: 'health',\n });\n return res.status === 200;\n } catch {\n return false;\n }\n }\n\n rebind<T extends TSerializable | undefined>(object: T): T {\n return applyObjectMethods(object, this);\n }\n\n Object<T extends string>(className: T, objectId?: string): TObjectType<T, Ext> {\n const attrs: Record<string, TValue> = objectId ? { _id: objectId } : {};\n const obj = isObjKey(className, TObjectTypes) ? new TObjectTypes[className](attrs) : new TObject(className, attrs);\n return this.rebind(obj as TObjectType<T, Ext>);\n }\n\n File(filename: string, data: FileData, type?: string) {\n const file = this.Object('File');\n file.set('filename', filename);\n file.set('type', type);\n file[PVK].extra.data = data;\n return file;\n }\n\n async userRoles(user: TUser) {\n let queue = await this.Query('Role')\n .isIntersect('users', [user])\n .includes('users', 'name')\n .find({ master: true });\n let roles = queue;\n while (!_.isEmpty(queue)) {\n queue = await this.Query('Role')\n .isIntersect('roles', queue)\n .notContainsIn('_id', _.compact(_.map(roles, x => x.objectId)))\n .includes('roles', 'name')\n .find({ master: true });\n roles = _.uniqBy([...roles, ...queue], x => x.objectId);\n }\n return roles;\n }\n\n abstract notify(\n data: Record<string, _TValue> & { _rperm?: string[]; },\n options?: ExtraOptions<boolean, this>\n ): Promise<void>\n\n abstract listen(callback: (data: EventData) => void): {\n remove: VoidFunction;\n socket?: Socket;\n }\n};\n\nexport interface ProtoType<Ext> {\n\n connect<R extends Request, T extends object>(\n req: R,\n attrs?: T | ((x: this & { req: R; }) => T)\n ): this & { req: R; } & T;\n\n connectWithSessionToken<T extends object>(\n token: string,\n attrs?: T | ((x: this & { session?: Session; }) => T)\n ): Promise<this & { session?: Session; } & T>\n\n setSessionToken(token?: string): void\n\n becomeUser(\n req: Request,\n user: TUser,\n options?: {\n cookieOptions?: CookieOptions | undefined;\n jwtSignOptions?: SignOptions | undefined;\n }\n ): Promise<void>;\n logoutUser(\n req: Request,\n options?: {\n cookieOptions?: CookieOptions | undefined;\n jwtSignOptions?: SignOptions | undefined;\n }\n ): Promise<void>;\n\n varifyPassword(user: TUser, password: string, options: ExtraOptions<true, this>): Promise<boolean>;\n setPassword(user: TUser, password: string, options: ExtraOptions<true, this>): Promise<void>;\n unsetPassword(user: TUser, options: ExtraOptions<true, this>): Promise<void>;\n\n define(\n name: string,\n callback: ProtoFunction<Ext>,\n options?: Omit<ProtoFunctionOptions<Ext>, 'callback'>,\n ): void;\n\n beforeSave<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;\n afterSave<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;\n beforeDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;\n afterDelete<T extends string>(name: T, callback: ProtoTrigger<T, Ext>): void;\n\n lockTable(className: string | string[], update: boolean): void;\n\n withTransaction<T>(\n callback: (connection: ProtoType<Ext>) => PromiseLike<T>,\n options?: TransactionOptions,\n ): void;\n\n generateUploadToken(\n options?: { maxUploadSize?: number; }\n ): string;\n\n jwtSign(payload: any, options: jwt.SignOptions): string;\n jwtVarify(token: string, options?: jwt.VerifyOptions): jwt.JwtPayload | undefined;\n};\n","//\n// codec.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { Decimal } from 'decimal.js';\nimport { TObject } from '../internals/object';\nimport { TObjectTypes } from '../internals/object/types';\nimport { isObjKey } from '../internals/utils';\nimport { TValue } from '../internals/types';\n\nexport { Decimal };\ntype TNumber = number | Decimal | BigInt;\ntype TPrimitive = Date | string | TNumber | boolean | null | undefined;\ntype TDictionary = { [x: string]: TSerializable };\nexport type TSerializable = TDictionary | TSerializable[] | TPrimitive | TObject;\n\nexport type SerializeOptions = {\n space?: string | number;\n objAttrs?: string[];\n};\n\nexport type DeserializeOptions = {\n objAttrs?: string[];\n};\n\nconst encodeEJSON = (\n x: TSerializable,\n stack: any[],\n options: SerializeOptions,\n): any => {\n if (_.isNil(x) || _.isNumber(x) || _.isBoolean(x) || _.isString(x)) return x ?? null;\n if (_.isDate(x)) return { $date: x.valueOf() };\n if (x instanceof BigInt) return { $integer: x.toString() };\n if (x instanceof Decimal) return { $decimal: x.toString() };\n\n const found = _.indexOf(stack, x);\n if (found !== -1) return { $ref: found };\n\n if (_.isArray(x)) return x.map(v => encodeEJSON(v, [...stack, x], options));\n if (x instanceof TObject) {\n const attributes = options.objAttrs ? _.pick(x.attributes, ...options.objAttrs) : x.attributes;\n return {\n $object: {\n className: x.className,\n attributes: _.mapValues(attributes, v => encodeEJSON(v, [...stack, x], options)),\n }\n };\n }\n\n return _.transform(x, (r, v, k) => {\n r[k.startsWith('$') ? `$${k}` : k] = encodeEJSON(v, [...stack, x], options);\n }, {} as TDictionary);\n}\n\nconst decodeEJSON = (\n x: any,\n stack: any[],\n options: DeserializeOptions,\n): TSerializable => {\n if (_.isNil(x) || _.isNumber(x) || _.isBoolean(x) || _.isString(x)) return x ?? null;\n if (_.isArray(x)) {\n return _.transform(x, (r, v) => {\n r.push(decodeEJSON(v, [...stack, r], options));\n }, [] as TSerializable[]);\n }\n if (!_.isNil(x.$date)) return new Date(x.$date);\n if (!_.isNil(x.$integer)) return BigInt(x.$integer);\n if (!_.isNil(x.$decimal)) return new Decimal(x.$decimal);\n if (!_.isNil(x.$ref)) return stack[x.$ref];\n if (!_.isNil(x.$object)) {\n const { className, attributes } = x.$object;\n const _attributes = (self: TObject) => _.mapValues(\n options.objAttrs ? _.pick(attributes, ...options.objAttrs) : attributes,\n v => decodeEJSON(v, [...stack, self], options),\n ) as Record<string, TValue>;\n return isObjKey(className, TObjectTypes) ? new TObjectTypes[className](_attributes) : new TObject(className, _attributes);\n }\n return _.transform(x, (r, v, k) => {\n if (_.isString(k)) r[k.startsWith('$') ? k.substring(1) : k] = decodeEJSON(v, [...stack, r], options);\n }, {} as TDictionary);\n}\n\nexport const serialize = (\n x: TSerializable,\n options?: SerializeOptions,\n) => JSON.stringify(encodeEJSON(x, [], options ?? {}), undefined, options?.space);\n\nexport const deserialize = (\n buffer: string,\n options?: DeserializeOptions,\n) => decodeEJSON(JSON.parse(buffer), [], options ?? {});\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TObject } from '../internals/object';\nimport { TFile } from '../internals/object/file';\nimport { TRole } from '../internals/object/role';\nimport { TExtensions } from '../internals/object/types';\nimport { TUser } from '../internals/object/user';\nimport { TQuery } from '../internals/query';\n\nexport * from './codec';\nexport const classExtends = <E = {}>(x: TExtensions<E>) => x;\n\nexport const isQuery = (x: any): x is TQuery<any, any, any, any> => {\n return x instanceof TQuery;\n}\n\nexport const isObject = (x: any): x is TObject => {\n return x instanceof TObject;\n}\n\nexport const isUser = (x: any): x is TUser => {\n return x instanceof TUser;\n}\n\nexport const isRole = (x: any): x is TRole => {\n return x instanceof TRole;\n}\n\nexport const isFile = (x: any): x is TFile => {\n return x instanceof TFile;\n}\n","//\n// query.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ProtoClient } from './proto';\nimport { RequestOptions } from './options';\nimport { asyncStream } from '@o2ter/utils-js';\nimport { PVK } from '../internals/private';\nimport { TQuery, TQueryOptions, TQueryRandomOptions } from '../internals/query';\nimport { TObject } from '../internals/object';\nimport { TObjectType, TUpdateOp } from '../internals/object/types';\nimport { TValue } from '../internals/types';\n\nexport class ProtoClientQuery<T extends string, E> extends TQuery<T, E, boolean, ProtoClient<E>> {\n\n private _proto: ProtoClient<E>;\n\n constructor(className: T, proto: ProtoClient<E>) {\n super(className);\n this._proto = proto;\n }\n\n private get _queryOptions() {\n return {\n className: this[PVK].className,\n ...this[PVK].options,\n } as any;\n }\n\n private _requestOpt(options?: RequestOptions<boolean, ProtoClient<E>>) {\n const { context, ...opts } = options ?? {};\n return {\n method: 'post',\n url: `classes/${encodeURIComponent(this.className)}`,\n serializeOpts: {\n objAttrs: TObject.defaultReadonlyKeys,\n },\n ...opts,\n };\n }\n\n clone(options?: TQueryOptions) {\n const clone = new ProtoClientQuery(this.className, this._proto);\n clone[PVK].options = options ?? { ...this[PVK].options };\n return clone;\n }\n\n explain(options?: RequestOptions<boolean, ProtoClient<E>>) {\n return this._proto[PVK].request(this._proto, {\n operation: 'explain',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options));\n }\n\n count(options?: RequestOptions<boolean, ProtoClient<E>>) {\n return this._proto[PVK].request(this._proto, {\n operation: 'count',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n find(options?: RequestOptions<boolean, ProtoClient<E>>) {\n const request = () => this._proto[PVK].request(this._proto, {\n operation: 'find',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options)) as Promise<TObjectType<T, E>[]>;\n return asyncStream(request);\n }\n\n random(\n opts?: TQueryRandomOptions,\n options?: RequestOptions<boolean, ProtoClient<E>>\n ) {\n const request = () => this._proto[PVK].request(this._proto, {\n operation: 'random',\n context: options?.context ?? {},\n silent: options?.silent,\n random: opts,\n ...this._queryOptions,\n }, this._requestOpt(options)) as Promise<TObjectType<T, E>[]>;\n return asyncStream(request);\n }\n\n nonrefs(options?: RequestOptions<boolean, ProtoClient<E>>) {\n const request = () => this._proto[PVK].request(this._proto, {\n operation: 'nonrefs',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options)) as Promise<TObjectType<T, E>[]>;\n return asyncStream(request);\n }\n\n insert(\n attrs: Record<string, TValue>,\n options?: RequestOptions<boolean, ProtoClient<E>>\n ) {\n return this._proto[PVK].request(this._proto, {\n operation: 'insert',\n context: options?.context ?? {},\n silent: options?.silent,\n attributes: attrs,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n insertMany(\n values: Record<string, TValue>[],\n options?: RequestOptions<boolean, ProtoClient<E>>\n ) {\n return this._proto[PVK].request(this._proto, {\n operation: 'insertMany',\n context: options?.context ?? {},\n silent: options?.silent,\n attributes: values,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n updateOne(\n update: Record<string, TUpdateOp>,\n options?: RequestOptions<boolean, ProtoClient<E>>\n ) {\n return this._proto[PVK].request(this._proto, {\n operation: 'updateOne',\n context: options?.context ?? {},\n silent: options?.silent,\n update,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n upsertOne(\n update: Record<string, TUpdateOp>,\n setOnInsert: Record<string, TValue>,\n options?: RequestOptions<boolean, ProtoClient<E>>\n ) {\n return this._proto[PVK].request(this._proto, {\n operation: 'upsertOne',\n context: options?.context ?? {},\n silent: options?.silent,\n update,\n setOnInsert,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n deleteOne(options?: RequestOptions<boolean, ProtoClient<E>>) {\n return this._proto[PVK].request(this._proto, {\n operation: 'deleteOne',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n deleteMany(options?: RequestOptions<boolean, ProtoClient<E>>) {\n return this._proto[PVK].request(this._proto, {\n operation: 'deleteMany',\n context: options?.context ?? {},\n silent: options?.silent,\n ...this._queryOptions,\n }, this._requestOpt(options)) as any;\n }\n\n}","//\n// request.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport {\n AUTH_COOKIE_KEY,\n MASTER_PASS_HEADER_NAME,\n MASTER_USER_HEADER_NAME,\n} from '../internals/const';\nimport { RequestOptions } from './options';\nimport { ProtoClientInternal } from './proto/internal';\nimport { ProtoType } from '../internals/proto';\nimport { AxiosOptions } from './proto/types';\nimport { XSRF_COOKIE_NAME, XSRF_HEADER_NAME } from '@o2ter/server-js/dist/const';\nimport { io, Socket } from 'socket.io-client';\n\nexport default class Service<Ext, P extends ProtoType<any>> {\n\n proto: ProtoClientInternal<Ext, P>;\n service: AxiosInstance;\n\n private token?: string;\n private sockets: Socket[] = [];\n\n private retryLimit?: number;\n\n constructor(proto: ProtoClientInternal<Ext, P>, { retryLimit, ...options }: AxiosOptions = {}) {\n this.proto = proto;\n this.service = axios.create({\n xsrfCookieName: XSRF_COOKIE_NAME,\n xsrfHeaderName: XSRF_HEADER_NAME,\n withCredentials: true,\n validateStatus: status => status >= 200 && status < 500,\n ...options,\n });\n this.retryLimit = retryLimit;\n }\n\n setSessionToken(token?: string) {\n this.token = token;\n if (typeof window === 'undefined') {\n this.service.defaults.headers.Cookie = token ? `${AUTH_COOKIE_KEY}=${token}` : null;\n }\n for (const socket of this.sockets) {\n socket.emit('auth', token);\n }\n }\n\n async _request<T = any, D = any>(config: RequestOptions<boolean, P> & AxiosRequestConfig<D>, retry = 0): Promise<AxiosResponse<T, D>> {\n\n const { master, abortSignal, serializeOpts, context, headers, ...opts } = config ?? {};\n\n const res = await this.service.request({\n signal: abortSignal,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n ...master ? {\n [MASTER_USER_HEADER_NAME]: this.proto.options.masterUser?.user,\n [MASTER_PASS_HEADER_NAME]: this.proto.options.masterUser?.pass,\n } : {},\n ...headers,\n },\n ...opts,\n });\n\n if (res.headers['set-cookie']) {\n const cookies = res.headers['set-cookie'];\n const pattern = `${AUTH_COOKIE_KEY}=`;\n const token = _.findLast(_.flatMap(cookies, x => x.split(';')), x => _.startsWith(x.trim(), pattern));\n this.setSessionToken(token?.trim().slice(pattern.length));\n }\n\n if (\n (this.retryLimit ? retry < this.retryLimit : true) &&\n _.includes([412, 429], res.status)\n ) {\n return this._request(config, retry + 1);\n }\n\n if (res.status !== 200) {\n let error: Error\n try {\n const _error = JSON.parse(res.data);\n error = new Error(_error.message, { cause: _error });\n } catch {\n error = new Error(res.data);\n }\n throw error;\n }\n\n return res;\n }\n\n async request<T = any, D = any>(config: RequestOptions<boolean, P> & AxiosRequestConfig<D>) {\n return this._request<T, D>(config);\n }\n\n socket() {\n const endpoint = this.proto.options.socketEndpoint;\n const options = { auth: { token: this.token } };\n const socket = endpoint ? io(endpoint, options) : io(options);\n\n this.sockets.push(socket);\n\n let disconnect = false;\n let listeners: ((payload: any) => void)[] = [];\n let destroyCallbacks: VoidFunction[] = [];\n\n socket.on('connect_error', () => {\n if (!disconnect && !socket.active) socket.connect();\n });\n socket.on('disconnect', () => {\n if (!disconnect && !socket.active) socket.connect();\n });\n\n socket.on('data', (payload) => {\n for (const callback of listeners) {\n callback(payload);\n }\n });\n\n const destroy = () => {\n disconnect = true;\n this.sockets = this.sockets.filter(x => x !== socket);\n socket.disconnect();\n for (const callback of destroyCallbacks) {\n callback();\n }\n };\n\n return {\n socket,\n listen: (callback: (payload: any) => void) => {\n listeners.push(callback);\n return () => {\n listeners = listeners.filter(x => x !== callback);\n if (_.isEmpty(listeners)) destroy();\n };\n },\n onDestroy: (callback: VoidFunction) => {\n destroyCallbacks.push(callback);\n },\n };\n }\n};\n","//\n// internal.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport Service from '../request';\nimport { RequestOptions } from '../options';\nimport { ProtoOptions } from './types';\nimport { TSchema } from '../../internals/schema';\nimport { asyncStream, base64ToBuffer, isBinaryData, isBlob, isReadableStream, iterableToStream } from '@o2ter/utils-js';\nimport { TSerializable, deserialize, serialize } from '../../common';\nimport { EventData, ProtoInternalType, ProtoType } from '../../internals/proto';\nimport { TObjectType } from '../../internals/object/types';\nimport { TUser } from '../../internals/object/user';\nimport { _TValue } from '../../internals/types';\nimport { TFile } from '../../internals/object/file';\nimport { PVK } from '../../internals/private';\nimport { FileData } from '../../internals/buffer';\nimport { ExtraOptions } from '../../internals/options';\nimport { UPLOAD_TOKEN_HEADER_NAME } from '../../internals/const';\nimport { _decodeValue, TObject } from '../../internals/object';\n\nexport class ProtoClientInternal<Ext, P extends ProtoType<any>> implements ProtoInternalType<Ext, P> {\n\n options: ProtoOptions<Ext>;\n service: Service<Ext, P>;\n\n socket?: ReturnType<Service<Ext, P>['socket']>;\n\n constructor(options: ProtoOptions<Ext>) {\n this.options = options;\n this.service = new Service(this, options.axiosOptions);\n }\n\n async request(\n proto: P,\n data?: TSerializable,\n options?: Parameters<Service<Ext, P>['request']>[0]\n ) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n baseURL: this.options.endpoint,\n data: serialize(data, serializeOpts),\n responseType: 'text',\n ...opts,\n });\n\n return proto.rebind(deserialize(res.data));\n }\n\n setSessionToken(proto: P, token?: string) {\n this.service.setSessionToken(token);\n }\n\n async sessionInfo(\n proto: P,\n options?: RequestOptions<boolean, P>\n ) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: 'sessionInfo',\n responseType: 'text',\n ...opts,\n });\n\n return proto.rebind(deserialize(res.data));\n }\n\n async currentUser(\n proto: P,\n options?: RequestOptions<boolean, P>\n ): Promise<TObjectType<'User', Ext> | undefined> {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: 'user/me',\n responseType: 'text',\n ...opts,\n });\n\n const user = proto.rebind(deserialize(res.data)) as TObjectType<'User', Ext>;\n if (!_.isNil(user) && !(user instanceof TUser)) throw Error('Unknown error');\n\n return user ?? undefined;\n }\n\n async config(options?: RequestOptions<boolean, P>) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: 'config',\n responseType: 'text',\n ...opts,\n });\n\n return deserialize(res.data) as Record<string, _TValue>;\n }\n async configAcl(options: RequestOptions<boolean, P>) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: 'configAcl',\n responseType: 'text',\n ...opts,\n });\n\n return deserialize(res.data) as Record<string, string[]>;\n }\n async setConfig(values: Record<string, _TValue>, options: RequestOptions<boolean, P> & { acl?: string[]; }) {\n\n const { serializeOpts, context, acl, ...opts } = options ?? {};\n\n await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: 'config',\n data: serialize({ values, acl }, serializeOpts),\n responseType: 'text',\n ...opts,\n });\n }\n\n async logout(options?: RequestOptions<boolean, P>) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: 'user/logout',\n responseType: 'text',\n ...opts,\n });\n }\n\n async setPassword(user: TUser, password: string, options: RequestOptions<true, P>) {\n\n if (!user.objectId) throw Error('Invalid user');\n if (_.isEmpty(password)) throw Error('Invalid password');\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: `user/${user.objectId}/password`,\n data: serialize({ password }, serializeOpts),\n responseType: 'text',\n ...opts,\n });\n }\n\n async unsetPassword(user: TUser, options: RequestOptions<true, P>) {\n\n if (!user.objectId) throw Error('Invalid user');\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: `user/${user.objectId}/password`,\n responseType: 'text',\n ...opts,\n });\n }\n\n async schema(options: RequestOptions<true, P>): Promise<Record<string, TSchema>> {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: 'schema',\n responseType: 'text',\n ...opts,\n });\n\n return deserialize(res.data) as any;\n }\n\n async updateFile(proto: P, object: TFile, options?: RequestOptions<boolean, P>) {\n\n const updated = await proto.Query(object.className)\n .equalTo('_id', object.objectId)\n .includes(...object.keys())\n .updateOne(object[PVK].mutated, options);\n\n if (updated) {\n object[PVK].attributes = updated.attributes;\n object[PVK].mutated = {};\n object[PVK].extra = {};\n }\n\n return object;\n }\n\n async createFile(proto: P, object: TFile, options?: RequestOptions<boolean, P> & { uploadToken?: string; }) {\n\n const { serializeOpts, context, uploadToken, ...opts } = options ?? {};\n const { data } = object[PVK].extra;\n if (_.isNil(data)) throw Error('Invalid file object');\n\n let buffer: FileData;\n\n if (_.isString(data) || isBinaryData(data) || isReadableStream(data) || isBlob(data)) {\n buffer = data;\n } else if ('base64' in data) {\n buffer = base64ToBuffer(data.base64);\n } else {\n throw Error('Invalid file object');\n }\n\n const res = await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: 'files',\n responseType: 'text',\n data: {\n attributes: serialize(_.fromPairs([...object.entries()]), serializeOpts),\n file: buffer,\n },\n headers: {\n 'Content-Type': 'multipart/form-data',\n [UPLOAD_TOKEN_HEADER_NAME]: uploadToken,\n },\n ...opts,\n });\n\n const created = deserialize(res.data);\n if (!_.isNil(created) && !(created instanceof TFile)) throw Error('Unknown error');\n\n if (created) {\n object[PVK].attributes = created.attributes;\n object[PVK].mutated = {};\n object[PVK].extra = {};\n }\n\n return object;\n }\n\n async saveFile(proto: P, object: TFile, options?: RequestOptions<boolean, P>) {\n return object.objectId ? this.updateFile(proto, object, options) : this.createFile(proto, object, options);\n }\n\n async deleteFile(proto: P, object: TFile, options?: ExtraOptions<boolean, any>) {\n\n const deleted = await proto.Query(object.className)\n .equalTo('_id', object.objectId)\n .deleteOne(options);\n\n if (deleted) {\n object[PVK].attributes = deleted.attributes;\n object[PVK].mutated = {};\n object[PVK].extra = {};\n }\n\n return object;\n }\n\n fileData(proto: P, object: TFile, options?: RequestOptions<boolean, P>) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n const filename = object.filename;\n if (_.isNil(filename)) throw Error('Invalid filename');\n\n return iterableToStream(async () => {\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: `files/${object.objectId}/${encodeURIComponent(filename)}`,\n responseType: 'stream',\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n ...opts,\n });\n\n if (Symbol.asyncIterator in res.data) {\n return res.data;\n } else {\n throw Error('Unknown stream type');\n }\n });\n }\n\n async notify(\n proto: P,\n data: Record<string, _TValue> & { _rperm?: string[]; },\n options?: RequestOptions<boolean, P>\n ) {\n\n const { serializeOpts, context, ...opts } = options ?? {};\n\n await this.service.request({\n method: 'post',\n baseURL: this.options.endpoint,\n url: 'notify',\n data: serialize(data, serializeOpts),\n responseType: 'text',\n ...opts,\n });\n }\n\n listen(proto: P, callback: (data: EventData) => void) {\n const { socket, listen, onDestroy } = this.socket ?? this.service.socket();\n if (_.isNil(this.socket)) {\n this.socket = { socket, listen, onDestroy };\n onDestroy(() => { this.socket = undefined; });\n }\n return {\n socket,\n remove: listen((payload) => {\n callback(payload);\n }),\n };\n }\n\n refs(proto: P, object: TObject, options?: RequestOptions<boolean, P>) {\n if (!object.objectId) throw Error('Invalid object');\n const request = async () => {\n const { serializeOpts, context, ...opts } = options ?? {};\n const res = await this.service.request({\n method: 'get',\n baseURL: this.options.endpoint,\n url: `classes/${encodeURIComponent(object.className)}/${object.objectId}/refs`,\n serializeOpts: {\n objAttrs: TObject.defaultReadonlyKeys,\n },\n responseType: 'text',\n ...opts,\n });\n return proto.rebind(deserialize(res.data)) as TObjectType<string, Ext>[];\n }\n return asyncStream(request);\n }\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2024 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ProtoClientQuery } from '../query';\nimport { RequestOptions } from '../options';\nimport { ProtoClientInternal } from './internal';\nimport { ProtoOptions } from './types';\nimport { TSerializable } from '../../common';\nimport { EventData, ProtoType } from '../../internals/proto';\nimport { TQuery } from '../../internals/query';\nimport { PVK } from '../../internals/private';\nimport { _TValue } from '../../internals/types';\nimport { TUser } from '../../internals/object/user';\nimport { TObject } from '../../internals/object';\n\nexport class ProtoClient<Ext> extends ProtoType<Ext> {\n\n [PVK]: ProtoClientInternal<Ext, this>;\n\n constructor(options: ProtoOptions<Ext>) {\n super();\n this[PVK] = new ProtoClientInternal({ ...options });\n }\n\n Query<T extends string>(className: T): TQuery<T, Ext, boolean, this> {\n return new ProtoClientQuery<T, Ext>(className, this);\n }\n\n config(options?: RequestOptions<boolean, this>): Promise<Record<string, _TValue>> {\n return this[PVK].config(options);\n }\n configAcl(options: RequestOptions<true, this>) {\n if (options.master !== true) throw Error('No permission');\n return this[PVK].configAcl(options);\n }\n async setConfig(values: Record<string, _TValue>, options: RequestOptions<true, this> & { acl?: string[]; }) {\n if (options.master !== true) throw Error('No permission');\n await this[PVK].setConfig(values, options);\n }\n\n run(\n name: string,\n data?: TSerializable,\n options?: RequestOptions<boolean, this>\n ): Promise<void | TSerializable> {\n return this[PVK].request(this, data, {\n method: 'post',\n url: `functions/${encodeURIComponent(name)}`,\n ...(options ?? {})\n });\n }\n\n setSessionToken(token?: string) {\n this[PVK].setSessionToken(this, token);\n }\n\n sessionInfo(options?: RequestOptions<boolean, this>) {\n return this[PVK].sessionInfo(this, options);\n }\n\n currentUser(options?: RequestOptions<boolean, this>) {\n return this[PVK].currentUser(this, options);\n }\n\n logout(options?: RequestOptions<boolean, this>) {\n return this[PVK].logout(options);\n }\n\n setPassword(user: TUser, password: string, options: RequestOptions<true, this>) {\n return this[PVK].setPassword(user, password, options);\n }\n\n unsetPassword(user: TUser, options: RequestOptions<true, this>) {\n return this[PVK].unsetPassword(user, options);\n }\n\n schema(options: RequestOptions<true, this>) {\n return this[PVK].schema(options);\n }\n\n notify(data: Record<string, _TValue> & { _rperm?: string[]; }, options?: RequestOptions<boolean, this>) {\n return this[PVK].notify(this, data, options);\n }\n\n listen(callback: (data: EventData) => void) {\n return this[PVK].listen(this, callback);\n }\n\n refs(object: TObject, options?: RequestOptions<boolean, this>) {\n return this[PVK].refs(this, object, options);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -279,6 +279,13 @@ class TQuery extends TQueryBase {
|
|
|
279
279
|
await callback(batch);
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
|
+
async each(callback, options) {
|
|
283
|
+
await this.eachBatch(async (batch) => {
|
|
284
|
+
for (const object of batch) {
|
|
285
|
+
await callback(object);
|
|
286
|
+
}
|
|
287
|
+
}, options);
|
|
288
|
+
}
|
|
282
289
|
}
|
|
283
290
|
|
|
284
291
|
//
|
|
@@ -873,6 +880,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
873
880
|
return this._proto[_private.PVK].request(this._proto, {
|
|
874
881
|
operation: 'explain',
|
|
875
882
|
context: options?.context ?? {},
|
|
883
|
+
silent: options?.silent,
|
|
876
884
|
...this._queryOptions,
|
|
877
885
|
}, this._requestOpt(options));
|
|
878
886
|
}
|
|
@@ -880,6 +888,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
880
888
|
return this._proto[_private.PVK].request(this._proto, {
|
|
881
889
|
operation: 'count',
|
|
882
890
|
context: options?.context ?? {},
|
|
891
|
+
silent: options?.silent,
|
|
883
892
|
...this._queryOptions,
|
|
884
893
|
}, this._requestOpt(options));
|
|
885
894
|
}
|
|
@@ -887,6 +896,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
887
896
|
const request = () => this._proto[_private.PVK].request(this._proto, {
|
|
888
897
|
operation: 'find',
|
|
889
898
|
context: options?.context ?? {},
|
|
899
|
+
silent: options?.silent,
|
|
890
900
|
...this._queryOptions,
|
|
891
901
|
}, this._requestOpt(options));
|
|
892
902
|
return utilsJs.asyncStream(request);
|
|
@@ -895,6 +905,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
895
905
|
const request = () => this._proto[_private.PVK].request(this._proto, {
|
|
896
906
|
operation: 'random',
|
|
897
907
|
context: options?.context ?? {},
|
|
908
|
+
silent: options?.silent,
|
|
898
909
|
random: opts,
|
|
899
910
|
...this._queryOptions,
|
|
900
911
|
}, this._requestOpt(options));
|
|
@@ -904,6 +915,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
904
915
|
const request = () => this._proto[_private.PVK].request(this._proto, {
|
|
905
916
|
operation: 'nonrefs',
|
|
906
917
|
context: options?.context ?? {},
|
|
918
|
+
silent: options?.silent,
|
|
907
919
|
...this._queryOptions,
|
|
908
920
|
}, this._requestOpt(options));
|
|
909
921
|
return utilsJs.asyncStream(request);
|
|
@@ -912,6 +924,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
912
924
|
return this._proto[_private.PVK].request(this._proto, {
|
|
913
925
|
operation: 'insert',
|
|
914
926
|
context: options?.context ?? {},
|
|
927
|
+
silent: options?.silent,
|
|
915
928
|
attributes: attrs,
|
|
916
929
|
...this._queryOptions,
|
|
917
930
|
}, this._requestOpt(options));
|
|
@@ -920,6 +933,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
920
933
|
return this._proto[_private.PVK].request(this._proto, {
|
|
921
934
|
operation: 'insertMany',
|
|
922
935
|
context: options?.context ?? {},
|
|
936
|
+
silent: options?.silent,
|
|
923
937
|
attributes: values,
|
|
924
938
|
...this._queryOptions,
|
|
925
939
|
}, this._requestOpt(options));
|
|
@@ -928,6 +942,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
928
942
|
return this._proto[_private.PVK].request(this._proto, {
|
|
929
943
|
operation: 'updateOne',
|
|
930
944
|
context: options?.context ?? {},
|
|
945
|
+
silent: options?.silent,
|
|
931
946
|
update,
|
|
932
947
|
...this._queryOptions,
|
|
933
948
|
}, this._requestOpt(options));
|
|
@@ -936,6 +951,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
936
951
|
return this._proto[_private.PVK].request(this._proto, {
|
|
937
952
|
operation: 'upsertOne',
|
|
938
953
|
context: options?.context ?? {},
|
|
954
|
+
silent: options?.silent,
|
|
939
955
|
update,
|
|
940
956
|
setOnInsert,
|
|
941
957
|
...this._queryOptions,
|
|
@@ -945,6 +961,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
945
961
|
return this._proto[_private.PVK].request(this._proto, {
|
|
946
962
|
operation: 'deleteOne',
|
|
947
963
|
context: options?.context ?? {},
|
|
964
|
+
silent: options?.silent,
|
|
948
965
|
...this._queryOptions,
|
|
949
966
|
}, this._requestOpt(options));
|
|
950
967
|
}
|
|
@@ -952,6 +969,7 @@ class ProtoClientQuery extends TQuery {
|
|
|
952
969
|
return this._proto[_private.PVK].request(this._proto, {
|
|
953
970
|
operation: 'deleteMany',
|
|
954
971
|
context: options?.context ?? {},
|
|
972
|
+
silent: options?.silent,
|
|
955
973
|
...this._queryOptions,
|
|
956
974
|
}, this._requestOpt(options));
|
|
957
975
|
}
|
|
@@ -1480,4 +1498,4 @@ exports.isQuery = isQuery;
|
|
|
1480
1498
|
exports.isRole = isRole;
|
|
1481
1499
|
exports.isUser = isUser;
|
|
1482
1500
|
exports.serialize = serialize;
|
|
1483
|
-
//# sourceMappingURL=index-
|
|
1501
|
+
//# sourceMappingURL=index-tNCIyuCp.js.map
|