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
@@ -1,5 +1,5 @@
1
1
  import * as _o2ter_utils_js from '@o2ter/utils-js';
2
- import { asyncStream, Awaitable } from '@o2ter/utils-js';
2
+ import { BinaryData, asyncStream, Awaitable } from '@o2ter/utils-js';
3
3
  import jwt, { SignOptions, VerifyOptions } from 'jsonwebtoken';
4
4
  import { Request, CookieOptions } from '@o2ter/server-js';
5
5
  import Decimal$1, { Decimal } from 'decimal.js';
@@ -7,8 +7,6 @@ import _ from 'lodash';
7
7
  import { Readable } from 'node:stream';
8
8
  import { Socket } from 'socket.io-client';
9
9
 
10
- declare const PVK: unique symbol;
11
-
12
10
  type TNumber = number | Decimal | BigInt;
13
11
  type TPrimitive = Date | string | TNumber | boolean | null | undefined;
14
12
  type TDictionary = {
@@ -184,9 +182,6 @@ interface TQueryBaseOptions extends TQueryFilterBaseOptions {
184
182
  matches?: Record<string, TQueryBaseOptions>;
185
183
  }
186
184
  declare class TQueryFilterBase {
187
- [PVK]: {
188
- options: TQueryFilterBaseOptions;
189
- };
190
185
  filter(filter: TQuerySelector): this;
191
186
  equalTo<T extends string>(key: PathName<T>, value: TValue | undefined): this;
192
187
  notEqualTo<T extends string>(key: PathName<T>, value: TValue | undefined): this;
@@ -213,9 +208,6 @@ declare class TQueryFilterBase {
213
208
  nor(...callbacks: ((query: TQueryFilterBase) => void)[]): this;
214
209
  }
215
210
  declare class TQueryBase extends TQueryFilterBase {
216
- [PVK]: {
217
- options: TQueryBaseOptions;
218
- };
219
211
  sort<T extends Record<string, 1 | -1>>(sort: PathNameMap<T> | TSortOption[]): this;
220
212
  skip(skip: number): this;
221
213
  limit(limit: number): this;
@@ -229,10 +221,6 @@ interface TQueryRandomOptions {
229
221
  weight?: string;
230
222
  }
231
223
  declare abstract class TQuery<T extends string, Ext, M extends boolean, P extends ProtoType<any>> extends TQueryBase {
232
- [PVK]: {
233
- className: T;
234
- options: TQueryOptions;
235
- };
236
224
  constructor(className: T, options?: TQueryOptions);
237
225
  get className(): T;
238
226
  abstract clone(options?: TQueryOptions): TQuery<T, Ext, M, P>;
@@ -293,17 +281,7 @@ type EventData = Record<string, _TValue> & {
293
281
  _created_at: Date;
294
282
  _rperm: string[];
295
283
  };
296
- interface ProtoInternalType<Ext, P extends ProtoType<any>> {
297
- options: {
298
- endpoint: string;
299
- classExtends?: TExtensions<Ext>;
300
- };
301
- saveFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
302
- deleteFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
303
- fileData(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): FileStream;
304
- }
305
284
  declare abstract class ProtoType<Ext> {
306
- abstract [PVK]: ProtoInternalType<Ext, this>;
307
285
  abstract config(options?: {
308
286
  master?: boolean;
309
287
  }): Promise<Record<string, _TValue>>;
@@ -387,12 +365,6 @@ interface TObject {
387
365
  declare class TObject {
388
366
  static defaultReadonlyKeys: string[];
389
367
  static defaultKeys: string[];
390
- [PVK]: {
391
- className: string;
392
- attributes: Record<string, TValue>;
393
- mutated: Record<string, TUpdateOp>;
394
- extra: Record<string, any>;
395
- };
396
368
  constructor(className: string, attributes?: Record<string, TValue> | ((self: TObject) => Record<string, TValue>));
397
369
  get className(): string;
398
370
  get attributes(): Record<string, TValue>;
@@ -591,8 +563,10 @@ interface TStorage {
591
563
  deleteMany(query: DecodedQuery<FindOptions>): PromiseLike<number>;
592
564
  lockTable(className: string | string[], update: boolean): Promise<void>;
593
565
  withConnection<T>(callback: (connection: TStorage) => PromiseLike<T>): PromiseLike<T>;
566
+ isDuplicateIdError(error: any): boolean;
594
567
  atomic<T>(callback: (connection: TStorage) => PromiseLike<T>, options?: {
595
568
  lockTable?: string;
569
+ retry?: boolean;
596
570
  }): PromiseLike<T>;
597
571
  withTransaction<T>(callback: (connection: TStorage) => PromiseLike<T>, options?: TransactionOptions): PromiseLike<T>;
598
572
  }
@@ -642,54 +616,7 @@ type ProtoServiceKeyOptions = {
642
616
  }[];
643
617
  };
644
618
 
645
- declare class ProtoInternal<Ext, P extends ProtoService<Ext>> implements ProtoInternalType<Ext, P> {
646
- options: Required<ProtoServiceOptions<Ext>> & ProtoServiceKeyOptions;
647
- functions: Record<string, ProtoFunction<Ext> | ProtoFunctionOptions<Ext>>;
648
- triggers: {
649
- beforeSave?: Record<string, ProtoTrigger<string, Ext>>;
650
- afterSave?: Record<string, ProtoTrigger<string, Ext>>;
651
- beforeDelete?: Record<string, ProtoTrigger<string, Ext>>;
652
- afterDelete?: Record<string, ProtoTrigger<string, Ext>>;
653
- };
654
- constructor(options: Required<ProtoServiceOptions<Ext>> & ProtoServiceKeyOptions);
655
- prepare(): Promise<void>;
656
- generateId(): string;
657
- private _perms;
658
- config(proto: P, options?: {
659
- master?: boolean;
660
- }): Promise<Record<string, _TValue>>;
661
- configAcl(): PromiseLike<Record<string, string[]>>;
662
- setConfig(values: Record<string, _TValue>, acl?: string[]): Promise<void>;
663
- run(proto: P, name: string, payload: any, options?: ExtraOptions<boolean, P>): Promise<void | TSerializable>;
664
- varifyPassword(proto: P, user: TUser, password: string, options: ExtraOptions<true, P>): Promise<boolean>;
665
- setPassword(proto: P, user: TUser, password: string, options: ExtraOptions<true, P>): Promise<void>;
666
- unsetPassword(proto: P, user: TUser, options: ExtraOptions<true, P>): Promise<void>;
667
- updateFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
668
- varifyUploadToken(proto: P, token?: string, isMaster?: boolean): {
669
- nonce: string | undefined;
670
- maxUploadSize: number;
671
- };
672
- createFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P> & {
673
- uploadToken?: string;
674
- }): Promise<TFile>;
675
- saveFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
676
- deleteFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
677
- fileData(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Readable;
678
- destroyFileData(proto: P, id: string): void;
679
- jwtSign(payload: any, options: 'login' | 'upload' | jwt.SignOptions): string;
680
- jwtVarify(token: string, options?: 'login' | 'upload' | jwt.VerifyOptions): jwt.JwtPayload | undefined;
681
- notify(proto: P, data: Record<string, _TValue> & {
682
- _rperm?: string[];
683
- }): Promise<void>;
684
- listen(proto: P, callback: (data: EventData) => void): {
685
- remove: VoidFunction;
686
- };
687
- validateCLPs(className: string, acls: string[], keys: (keyof TSchema.CLPs)[]): boolean;
688
- refs(proto: P, object: TObject, options?: ExtraOptions<boolean, P>): Promise<AsyncIterable<TObject>>;
689
- }
690
-
691
619
  declare class ProtoService<Ext> extends ProtoType<Ext> {
692
- [PVK]: ProtoInternal<Ext, this>;
693
620
  private _storage?;
694
621
  private _schedule;
695
622
  req?: Request;
@@ -773,5 +700,5 @@ declare class ProtoService<Ext> extends ProtoType<Ext> {
773
700
  refs(object: TObject, options?: ExtraOptions<boolean, this>): _o2ter_utils_js.AsyncStream<TObjectType<string, Ext>>;
774
701
  }
775
702
 
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 };
777
- //# sourceMappingURL=index-CvfRsxEZ.d.ts.map
703
+ export { type TFileInfo as A, 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 TObjectType as m, type EventData as n, type DecodedQuery as o, type DecodedSortOption as p, type TValue as q, type FindOneOptions as r, serialize as s, type TUpdateOp as t, FieldSelectorExpression as u, QueryExpression as v, type TStorage as w, type TransactionOptions as x, type TQueryRandomOptions as y, type TPubSub as z };
704
+ //# sourceMappingURL=index-013pxZ3P.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-013pxZ3P.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -131,6 +131,7 @@ const decodeUpdateOp = (update) => {
131
131
  class TObject {
132
132
  static defaultReadonlyKeys = defaultObjectReadonlyKeys;
133
133
  static defaultKeys = defaultObjectKeys;
134
+ /** @internal */
134
135
  [PVK];
135
136
  constructor(className, attributes) {
136
137
  const _attributes = _.isFunction(attributes) ? attributes(this) : attributes ?? {};
@@ -192,6 +193,15 @@ class TObject {
192
193
  yield [key, this.get(key)];
193
194
  }
194
195
  }
196
+ /** @internal */
197
+ *_set_entries() {
198
+ for (const [key, op] of _.entries(this[PVK].mutated)) {
199
+ for (const [_op, value] of _.entries(op)) {
200
+ if (_op === '$set')
201
+ yield [key, value];
202
+ }
203
+ }
204
+ }
195
205
  toObject() {
196
206
  const toObject = (value) => {
197
207
  if (isPrimitiveValue(value))
@@ -325,4 +335,4 @@ class TObject {
325
335
  }
326
336
 
327
337
  export { TObject as T, _decodeValue as _, isPointer as a, isRelation as b, defaultObjectKeyTypes as c, decodeUpdateOp as d, isPrimitive as e, isVector as f, _encodeValue as g, dimensionOf as h, isShape as i, _typeof as j, isPrimitiveValue as k, isValue as l, shapePaths as s };
328
- //# sourceMappingURL=index-EOtjV6U_.mjs.map
338
+ //# sourceMappingURL=index-BmRuvHVZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BmRuvHVZ.mjs","sources":["../../../src/internals/schema.ts","../../../src/internals/object/index.ts"],"sourcesContent":["//\n// schema.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 { _TValue } from './types';\n\nexport namespace TSchema {\n export type ACL = string[];\n export type ACLs = { read: TSchema.ACL; update: TSchema.ACL; };\n export type Primitive = 'boolean' | 'number' | 'decimal' | 'string' | 'date' | 'object' | 'array';\n export type PrimitiveType = Primitive | { type: Primitive; default?: _TValue; };\n export type VectorType = { type: 'vector'; dimension: number; default?: number[]; };\n export type ShapeType = { type: 'shape'; shape: Record<string, DataType>; };\n export type Relation = 'pointer' | 'relation';\n export type PointerType = { type: 'pointer'; target: string; };\n export type RelationType = { type: 'relation'; target: string; foreignField?: string; };\n export type DataType = PrimitiveType | VectorType | ShapeType | PointerType | RelationType;\n export type CLPs = {\n get?: TSchema.ACL;\n find?: TSchema.ACL;\n count?: TSchema.ACL;\n create?: TSchema.ACL;\n update?: TSchema.ACL;\n delete?: TSchema.ACL;\n };\n export type FLPs = {\n read?: TSchema.ACL;\n create?: TSchema.ACL;\n update?: TSchema.ACL;\n };\n export type Indexes = {\n type?: 'basic';\n keys: Record<string, 1 | -1>;\n unique?: boolean;\n } | {\n type: 'vector';\n keys: string | string[];\n method?: 'hnsw' | 'ivfflat';\n };\n}\n\nexport const isPrimitive = (x: TSchema.DataType): x is TSchema.PrimitiveType => _.isString(x) || (x.type !== 'pointer' && x.type !== 'relation' && x.type !== 'shape');\nexport const isVector = (x: TSchema.DataType): x is TSchema.VectorType => !_.isString(x) && x.type === 'vector';\nexport const dimensionOf = (x: TSchema.DataType) => isVector(x) ? x.dimension : 0;\nexport const isShape = (x: TSchema.DataType): x is TSchema.ShapeType => !_.isString(x) && x.type === 'shape';\nexport const isPointer = (x: TSchema.DataType): x is TSchema.PointerType => !_.isString(x) && x.type === 'pointer';\nexport const isRelation = (x: TSchema.DataType): x is TSchema.RelationType => !_.isString(x) && x.type === 'relation';\nexport const _typeof = (x: TSchema.DataType) => _.isString(x) ? x : x.type !== 'pointer' && x.type !== 'relation' ? x.type : x.target;\n\nexport const shapePaths = (x: TSchema.ShapeType): {\n path: string,\n type: Exclude<TSchema.DataType, TSchema.ShapeType>,\n}[] => _.flatMap(x.shape, (v, k) => (\n isShape(v) ? _.map(shapePaths(v), x => ({ path: `${k}.${x.path}`, type: x.type })) : { path: k, type: v }\n));\n\nexport interface TSchema {\n fields: Record<string, TSchema.DataType>;\n classLevelPermissions?: TSchema.CLPs;\n additionalObjectPermissions?: TSchema.ACLs;\n fieldLevelPermissions?: Record<string, TSchema.FLPs>;\n secureFields?: string[];\n indexes?: TSchema.Indexes[];\n}\n\nexport const defaultObjectKeyTypes: Record<string, TSchema.DataType> = {\n _id: 'string',\n __v: 'number',\n __i: 'number',\n _created_at: 'date',\n _updated_at: 'date',\n _expired_at: 'date',\n _rperm: 'array',\n _wperm: 'array',\n};\n\nexport const defaultObjectReadonlyKeys = ['_id', '__v', '__i', '_created_at', '_updated_at'];\nexport const defaultObjectKeys = [...defaultObjectReadonlyKeys, '_expired_at', '_rperm', '_wperm'];\n","//\n// object.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 { PVK } from '../private';\nimport { ExtraOptions } from '../options';\nimport { Decimal } from 'decimal.js';\nimport { TPrimitiveValue, TValue, _TValue } from '../types';\nimport { TSchema, defaultObjectKeys, defaultObjectReadonlyKeys } from '../schema';\nimport { PathName } from '../query/types';\nimport { TUpdateOp, TUpdateOpKeys } from './types';\nimport { ProtoType } from '../proto';\n\nexport const isPrimitiveValue = (x: any): x is TPrimitiveValue => {\n if (_.isNil(x) || _.isNumber(x) || _.isBoolean(x) || _.isString(x) || _.isDate(x)) return true;\n if (x instanceof Decimal) return true;\n return false;\n}\n\nexport const isValue = (x: any): x is TValue => {\n if (isPrimitiveValue(x) || x instanceof TObject) return true;\n if (_.isArray(x)) return _.every(x, v => isValue(v));\n if (_.isPlainObject(x)) return _.every(x, v => isValue(v));\n return false;\n}\n\nexport const cloneValue = <T extends TValue>(x: T): T => {\n if (isPrimitiveValue(x) || x instanceof TObject) return x;\n if (_.isArray(x)) return x.map(v => cloneValue(v)) as T;\n return _.mapValues(x, v => cloneValue(v)) as T;\n}\n\nexport const _decodeValue = (value: _TValue): _TValue => {\n if (isPrimitiveValue(value)) return value;\n if (_.isArray(value)) return _.map(value, x => _decodeValue(x));\n if (_.isString(value.$date)) return new Date(value.$date);\n if (_.isString(value.$decimal)) return new Decimal(value.$decimal);\n return _.transform(value, (r, v, k) => {\n r[k.startsWith('$') ? k.substring(1) : k] = _decodeValue(v);\n }, {} as any);\n};\n\nexport const _encodeValue = (value: TValue): _TValue => {\n if (value instanceof TObject) throw Error('Invalid data type');\n if (_.isDate(value)) return { $date: value.toISOString() };\n if (value instanceof Decimal) return { $decimal: value.toString() };\n if (isPrimitiveValue(value)) return value;\n if (_.isArray(value)) return _.map(value, x => _encodeValue(x));\n return _.transform(value, (r, v, k) => {\n r[k.startsWith('$') ? `$${k}` : k] = _encodeValue(v);\n }, {} as any);\n};\n\nexport const decodeUpdateOp = (update: TUpdateOp) => {\n const pairs = _.toPairs(update);\n if (pairs.length !== 1) throw Error('Invalid update operation');\n return pairs[0] as [typeof TUpdateOpKeys[number], TValue];\n}\n\nexport interface TObject {\n clone(): TObject;\n fetchWithInclude(keys: string[], options?: ExtraOptions<boolean, ProtoType<any>>): PromiseLike<this>;\n save(options?: ExtraOptions<boolean, ProtoType<any>> & { cascadeSave?: boolean }): PromiseLike<this>;\n destroy(options?: ExtraOptions<boolean, ProtoType<any>>): PromiseLike<this>;\n}\n\nexport class TObject {\n\n static defaultReadonlyKeys = defaultObjectReadonlyKeys;\n static defaultKeys = defaultObjectKeys;\n\n /** @internal */\n [PVK]: {\n className: string;\n attributes: Record<string, TValue>;\n mutated: Record<string, TUpdateOp>;\n extra: Record<string, any>;\n };\n\n constructor(\n className: string,\n attributes?: Record<string, TValue> | ((self: TObject) => Record<string, TValue>),\n ) {\n const _attributes = _.isFunction(attributes) ? attributes(this) : attributes ?? {};\n this[PVK] = {\n className,\n attributes: cloneValue(_attributes),\n mutated: {},\n extra: {},\n }\n }\n\n get className(): string {\n return this[PVK].className;\n }\n\n get attributes(): Record<string, TValue> {\n return cloneValue(this[PVK].attributes);\n }\n\n get objectId(): string | undefined {\n return this[PVK].attributes._id as string;\n }\n\n get createdAt(): Date | undefined {\n return this[PVK].attributes._created_at as Date;\n }\n\n get updatedAt(): Date | undefined {\n return this[PVK].attributes._updated_at as Date;\n }\n\n get __v(): number {\n return this[PVK].attributes.__v as number;\n }\n\n get __i(): number {\n return this[PVK].attributes.__i as number;\n }\n\n get expiredAt(): Date | undefined {\n return this.get('_expired_at');\n }\n\n set expiredAt(value: Date | undefined) {\n this.set('_expired_at', value);\n }\n\n acl(): TSchema.ACLs {\n return {\n read: this.get('_rperm') ?? ['*'],\n update: this.get('_wperm') ?? ['*'],\n };\n }\n\n setAcl(value: Partial<TSchema.ACLs>) {\n this.set('_rperm', value.read ?? ['*']);\n this.set('_wperm', value.update ?? ['*']);\n }\n\n setReadAcl(value: TSchema.ACL) {\n this.set('_rperm', value);\n }\n\n setWriteAcl(value: TSchema.ACL) {\n this.set('_wperm', value);\n }\n\n keys(): string[] {\n return _.uniq([..._.keys(this[PVK].attributes), ..._.compact(_.map(_.keys(this[PVK].mutated), x => _.first(_.toPath(x))))]);\n }\n\n *entries() {\n for (const key of this.keys()) {\n yield [key, this.get(key)] as [string, any];\n }\n }\n\n /** @internal */\n *_set_entries() {\n for (const [key, op] of _.entries(this[PVK].mutated)) {\n for (const [_op, value] of _.entries(op)) {\n if (_op === '$set') yield [key, value] as [string, any];\n }\n }\n }\n\n toObject() {\n const toObject = (value: TValue): _TValue => {\n if (isPrimitiveValue(value)) return value;\n if (value instanceof TObject) return value.toObject();\n if (_.isArray(value)) return _.map(value, toObject);\n return _.mapValues(value, toObject);\n }\n return _.fromPairs(_.map(this.keys(), k => [k, toObject(this.get(k))]));\n }\n\n private _value(key: string): TValue {\n let value: TValue = this[PVK].attributes;\n for (const k of _.toPath(key)) {\n if (isPrimitiveValue(value)) return null;\n if (value instanceof TObject) {\n value = value.get(k);\n } else {\n value = _.get(value, k);\n }\n }\n return cloneValue(value);\n }\n\n get<T extends string>(key: PathName<T>): any {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (_.isNil(this[PVK].mutated[key])) return this._value(key);\n const [op, value] = decodeUpdateOp(this[PVK].mutated[key]);\n return op === '$set' ? value : this._value(key);\n }\n\n set<T extends string>(key: PathName<T>, value: TValue | undefined) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $set: value ?? null };\n }\n\n get isDirty(): boolean {\n return !_.isEmpty(this[PVK].mutated);\n }\n\n increment<T extends string>(key: PathName<T>, value: number) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $inc: value };\n }\n\n decrement<T extends string>(key: PathName<T>, value: number) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $dec: value };\n }\n\n multiply<T extends string>(key: PathName<T>, value: number) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $mul: value };\n }\n\n divide<T extends string>(key: PathName<T>, value: number) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $div: value };\n }\n\n max<T extends string>(key: PathName<T>, value: TValue) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $max: value };\n }\n\n min<T extends string>(key: PathName<T>, value: TValue) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $min: value };\n }\n\n addToSet<T extends string>(key: PathName<T>, values: TValue[]) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $addToSet: values };\n }\n\n push<T extends string>(key: PathName<T>, values: TValue[]) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $push: values };\n }\n\n removeAll<T extends string>(key: PathName<T>, values: TValue[]) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $removeAll: values };\n }\n\n popFirst<T extends string>(key: PathName<T>, count = 1) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $popFirst: count };\n }\n\n popLast<T extends string>(key: PathName<T>, count = 1) {\n if (_.isEmpty(key)) throw Error('Invalid key');\n if (TObject.defaultReadonlyKeys.includes(_.first(_.toPath(key))!)) return;\n this[PVK].mutated[key] = { $popLast: count };\n }\n\n async fetch(options?: ExtraOptions<boolean, any>) {\n return this.fetchWithInclude(_.keys(this[PVK].attributes), options);\n }\n\n async fetchIfNeeded(keys: string[], options?: ExtraOptions<boolean, any>) {\n const current = _.keys(this[PVK].attributes);\n if (_.every(keys, k => _.includes(current, k))) return this;\n return this.fetchWithInclude(_.uniq([...current, ...keys]), options);\n }\n\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-BqFdBhFc.js","sources":["../../../src/adapters/file/base/index.ts"],"sourcesContent":["//\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 { promisify } from 'util';\nimport { deflate as _deflate, unzip as _unzip } from 'zlib';\nimport { TFileInfo, TFileStorage } from '../../../server/file';\nimport { ProtoService } from '../../../server/proto';\nimport { TSchema } from '../../../internals/schema';\nimport { binaryStreamChunk, parallelEach, parallelMap } from '@o2ter/utils-js';\nimport { PVK } from '../../../internals/private';\n\nconst deflate = promisify(_deflate);\nconst unzip = promisify(_unzip);\n\nexport type FileStorageOptions = {\n chunkSize?: number;\n parallel?: number;\n};\n\nexport abstract class FileStorageBase implements TFileStorage {\n\n options: Required<FileStorageOptions>;\n\n constructor(options: FileStorageOptions) {\n this.options = {\n chunkSize: 16 * 1024,\n parallel: 8,\n ..._.pickBy(options, v => !_.isNil(v)),\n };\n }\n\n get schema(): Record<string, TSchema> {\n return {}\n }\n\n abstract createChunk<E>(proto: ProtoService<E>, token: string, start: number, end: number, compressed: Buffer): PromiseLike<void>;\n abstract readChunks<E>(proto: ProtoService<E>, token: string, start?: number, end?: number): AsyncGenerator<{\n start: number;\n data: Buffer | Uint8Array | PromiseLike<Buffer | Uint8Array>;\n }, void>;\n abstract destroy<E>(proto: ProtoService<E>, id: string): PromiseLike<void>;\n\n async create<E>(\n proto: ProtoService<E>,\n stream: BinaryData | AsyncIterable<BinaryData>,\n info: TFileInfo,\n maxUploadSize: number,\n ) {\n\n const token = proto[PVK].generateId();\n\n let size = 0;\n const _stream = async function* (stream: AsyncIterable<Buffer>) {\n for await (const data of stream) {\n yield { data, offset: size };\n size += data.byteLength;\n }\n };\n\n await parallelEach(\n _stream(binaryStreamChunk(stream, this.options.chunkSize)),\n this.options.parallel,\n async ({ data, offset }) => {\n const chunkSize = data.byteLength;\n await this.createChunk(proto, token, offset, offset + chunkSize, await deflate(data));\n if (offset + chunkSize > maxUploadSize) throw Error('Payload too large');\n }\n );\n\n return { _id: token, size };\n }\n\n async* fileData<E>(proto: ProtoService<E>, id: string, start?: number, end?: number) {\n\n const _stream = parallelMap(\n this.readChunks(proto, id, start, end),\n this.options.parallel,\n async chunk => ({\n start: chunk.start,\n data: await unzip(await chunk.data),\n })\n );\n\n for await (const { start: startBytes, data } of _stream) {\n\n if (!_.isNumber(start) && !_.isNumber(end)) {\n\n yield data;\n\n } else {\n\n const endBytes = startBytes + data.length;\n const _start = _.isNumber(start) && start > startBytes ? start - startBytes : 0;\n const _end = _.isNumber(end) && end < endBytes ? end - startBytes : undefined;\n\n yield data.subarray(_start, _end);\n }\n }\n }\n};\n\nexport default FileStorageBase;"],"names":["promisify","_deflate","_unzip","PVK","parallelEach","binaryStreamChunk","parallelMap"],"mappings":"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"}
1
+ {"version":3,"file":"index-BqFdBhFc.js","sources":["../../../src/adapters/file/base/index.ts"],"sourcesContent":["//\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 { promisify } from 'util';\nimport { deflate as _deflate, unzip as _unzip } from 'zlib';\nimport { TFileInfo, TFileStorage } from '../../../server/file';\nimport { ProtoService } from '../../../server/proto';\nimport { TSchema } from '../../../internals/schema';\nimport { BinaryData, binaryStreamChunk, parallelEach, parallelMap } from '@o2ter/utils-js';\nimport { PVK } from '../../../internals/private';\n\nconst deflate = promisify(_deflate);\nconst unzip = promisify(_unzip);\n\nexport type FileStorageOptions = {\n chunkSize?: number;\n parallel?: number;\n};\n\nexport abstract class FileStorageBase implements TFileStorage {\n\n options: Required<FileStorageOptions>;\n\n constructor(options: FileStorageOptions) {\n this.options = {\n chunkSize: 16 * 1024,\n parallel: 8,\n ..._.pickBy(options, v => !_.isNil(v)),\n };\n }\n\n get schema(): Record<string, TSchema> {\n return {}\n }\n\n abstract createChunk<E>(proto: ProtoService<E>, token: string, start: number, end: number, compressed: Buffer): PromiseLike<void>;\n abstract readChunks<E>(proto: ProtoService<E>, token: string, start?: number, end?: number): AsyncGenerator<{\n start: number;\n data: Buffer | Uint8Array | PromiseLike<Buffer | Uint8Array>;\n }, void>;\n abstract destroy<E>(proto: ProtoService<E>, id: string): PromiseLike<void>;\n\n async create<E>(\n proto: ProtoService<E>,\n stream: BinaryData | AsyncIterable<BinaryData>,\n info: TFileInfo,\n maxUploadSize: number,\n ) {\n\n const token = proto[PVK].generateId();\n\n let size = 0;\n const _stream = async function* (stream: AsyncIterable<Buffer>) {\n for await (const data of stream) {\n yield { data, offset: size };\n size += data.byteLength;\n }\n };\n\n await parallelEach(\n _stream(binaryStreamChunk(stream, this.options.chunkSize)),\n this.options.parallel,\n async ({ data, offset }) => {\n const chunkSize = data.byteLength;\n await this.createChunk(proto, token, offset, offset + chunkSize, await deflate(data));\n if (offset + chunkSize > maxUploadSize) throw Error('Payload too large');\n }\n );\n\n return { _id: token, size };\n }\n\n async* fileData<E>(proto: ProtoService<E>, id: string, start?: number, end?: number) {\n\n const _stream = parallelMap(\n this.readChunks(proto, id, start, end),\n this.options.parallel,\n async chunk => ({\n start: chunk.start,\n data: await unzip(await chunk.data),\n })\n );\n\n for await (const { start: startBytes, data } of _stream) {\n\n if (!_.isNumber(start) && !_.isNumber(end)) {\n\n yield data;\n\n } else {\n\n const endBytes = startBytes + data.length;\n const _start = _.isNumber(start) && start > startBytes ? start - startBytes : 0;\n const _end = _.isNumber(end) && end < endBytes ? end - startBytes : undefined;\n\n yield data.subarray(_start, _end);\n }\n }\n }\n};\n\nexport default FileStorageBase;"],"names":["promisify","_deflate","_unzip","PVK","parallelEach","binaryStreamChunk","parallelMap"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var _ = require('lodash');
4
- var index = require('./index-C6zdNpc_.js');
4
+ var index = require('./index-CVutVPmd.js');
5
5
 
6
6
  //
7
7
  // keys.ts
@@ -502,4 +502,4 @@ exports.QueryKeyExpression = QueryKeyExpression;
502
502
  exports.QueryNotExpression = QueryNotExpression;
503
503
  exports.QuerySelector = QuerySelector;
504
504
  exports.QueryValueExpression = QueryValueExpression;
505
- //# sourceMappingURL=index-DZS2c96L.js.map
505
+ //# sourceMappingURL=index-CSNRyhjB.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DZS2c96L.js","sources":["../../../src/internals/query/types/keys.ts","../../../src/server/query/dispatcher/parser/expressions.ts","../../../src/internals/query/types/selectors.ts","../../../src/server/query/dispatcher/parser/index.ts"],"sourcesContent":["//\n// keys.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 TComparisonKeys = [\n '$eq',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$ne',\n] as const;\n\nexport const TValueListKeys = [\n '$in',\n '$nin',\n] as const;\n\nexport const TValueSetKeys = [\n '$subset',\n '$superset',\n '$disjoint',\n '$intersect',\n] as const;\n\nexport const TConditionalKeys = [\n '$and',\n '$nor',\n '$or',\n] as const;\n\nexport const TDistanceKeys = [\n '$distance',\n '$innerProduct',\n '$negInnerProduct',\n '$cosineDistance',\n '$rectilinearDistance',\n] as const;\n","//\n// expressions.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 { TExpression } from '../../../../internals/query/types/expressions';\nimport { TComparisonKeys, TConditionalKeys, TDistanceKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\n\nexport class QueryExpression {\n\n static decode(expr: _.Many<TExpression>, dollerSign: boolean): QueryExpression {\n const exprs: QueryExpression[] = [];\n for (const selector of _.castArray(expr)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalExpression(key as any, _.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (_.includes(TComparisonKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n exprs.push(new QueryComparisonExpression(key as any, QueryExpression.decode(left as any, dollerSign), QueryExpression.decode(right as any, dollerSign)));\n } else if (_.includes(TDistanceKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n const _left = _.isArray(left) ? _.map(left, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(left as any, dollerSign);\n const _right = _.isArray(right) ? _.map(right, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(right as any, dollerSign);\n exprs.push(new QueryDistanceExpression(key as any, _.castArray(_left), _.castArray(_right)));\n } else if (key === '$not') {\n exprs.push(new QueryNotExpression(QueryExpression.decode(query as any, dollerSign)));\n } else if (key === '$array' && _.isArray(query)) {\n exprs.push(new QueryArrayExpression(_.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (key === '$key' && _.isString(query)) {\n if (dollerSign && query === '$') {\n exprs.push(new QueryKeyExpression(query));\n } else if (!query.startsWith('$')) {\n exprs.push(new QueryKeyExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n } else if (key === '$value' && isValue(query)) {\n exprs.push(new QueryValueExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QueryExpression;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalExpression('$and', exprs)).simplify();\n }\n\n simplify(): QueryExpression {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return this;\n }\n}\n\nexport class QueryCoditionalExpression extends QueryExpression {\n\n type: typeof TConditionalKeys[number];\n exprs: QueryExpression[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QueryExpression[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QueryExpression;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n case '$nor':\n case '$or':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryCoditionalExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryComparisonExpression extends QueryExpression {\n\n type: typeof TComparisonKeys[number];\n left: QueryExpression;\n right: QueryExpression;\n\n constructor(type: typeof TComparisonKeys[number], left: QueryExpression, right: QueryExpression) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryComparisonExpression(this.type, this.left.simplify(), this.right.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.left.keyPaths(),\n ...this.right.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryComparisonExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));\n }\n}\n\nexport class QueryNotExpression extends QueryExpression {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryNotExpression(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryNotExpression(this.expr.mapKey(callback));\n }\n}\n\nexport class QueryArrayExpression extends QueryExpression {\n\n exprs: QueryExpression[];\n\n constructor(exprs: QueryExpression[]) {\n super();\n this.exprs = exprs;\n }\n\n simplify() {\n return new QueryArrayExpression(_.map(this.exprs, x => x.simplify())) as QueryExpression;\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryArrayExpression(_.map(this.exprs, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryDistanceExpression extends QueryExpression {\n\n type: typeof TDistanceKeys[number];\n left: QueryExpression[];\n right: QueryExpression[];\n\n constructor(type: typeof TDistanceKeys[number], left: QueryExpression[], right: QueryExpression[]) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.simplify()), _.map(this.right, x => x.simplify()));\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ..._.flatMap(this.left, x => x.keyPaths()),\n ..._.flatMap(this.right, x => x.keyPaths()),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.mapKey(callback)), _.map(this.right, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryKeyExpression extends QueryExpression {\n\n key: string;\n\n constructor(key: string) {\n super();\n this.key = key;\n }\n\n keyPaths(): string[] {\n return this.key === '$' ? [] : [this.key];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryKeyExpression(callback(this.key));\n }\n}\n\nexport class QueryValueExpression extends QueryExpression {\n\n value: TValue;\n\n constructor(value: TValue) {\n super();\n this.value = value;\n }\n}\n","//\n// selectors.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 { TValue } from '../../types';\nimport { TBooleanExpression } from './expressions';\nimport { TConditionalKeys, TValueListKeys, TValueSetKeys, TComparisonKeys } from './keys';\n\nexport const allFieldQueryKeys = [\n '$not', '$pattern', '$starts', '$ends', '$size', '$empty', '$every', '$some',\n ...TConditionalKeys,\n ...TValueListKeys,\n ...TValueSetKeys\n];\n\ntype TThisQuerySelector = { $?: TFieldQuerySelector; };\n\nexport type TFieldQuerySelector = {\n $not?: TFieldQuerySelector;\n $starts?: string;\n $ends?: string;\n $pattern?: RegExp | string;\n $size?: number;\n $empty?: boolean;\n $every?: TQuerySelector | TThisQuerySelector;\n $some?: TQuerySelector | TThisQuerySelector;\n} & {\n [x in (typeof TComparisonKeys)[number]]?: TValue;\n } & {\n [x in (typeof TValueListKeys)[number]]?: TValue[];\n } & {\n [x in (typeof TValueSetKeys)[number]]?: TValue[];\n };\n\nexport type TCoditionalQuerySelector = {\n [x in (typeof TConditionalKeys)[number]]?: TQuerySelector[];\n};\n\nexport type TQuerySelector = TCoditionalQuerySelector & {\n $expr?: TBooleanExpression\n} | {\n [x: string]: TFieldQuerySelector;\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 { QueryExpression } from './expressions';\nimport { TFieldQuerySelector, TQuerySelector, allFieldQueryKeys } from '../../../../internals/query/types/selectors';\nimport { TComparisonKeys, TConditionalKeys, TValueListKeys, TValueSetKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\n\nexport class QuerySelector {\n\n static decode(selectors: _.Many<TQuerySelector>, dollerSign: boolean = false): QuerySelector {\n const exprs: QuerySelector[] = [];\n for (const selector of _.castArray(selectors)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalSelector(key as any, _.map(query, x => QuerySelector.decode(x, dollerSign))));\n } else if (key === '$expr') {\n exprs.push(new QueryExpressionSelector(QueryExpression.decode(query as any, dollerSign)));\n } else if (dollerSign && key === '$' && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else if (!key.startsWith('$') && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QuerySelector;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalSelector('$and', exprs)).simplify();\n }\n\n simplify(): QuerySelector {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n}\n\nexport class QueryCoditionalSelector extends QuerySelector {\n\n type: typeof TConditionalKeys[number];\n exprs: QuerySelector[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QuerySelector[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QuerySelector;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n case '$nor':\n case '$or':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n}\n\nexport class FieldSelectorExpression {\n\n type: keyof TFieldQuerySelector;\n value: QuerySelector | FieldSelectorExpression | RegExp | TValue;\n\n constructor(type: keyof TFieldQuerySelector, value: QuerySelector | FieldSelectorExpression | RegExp | TValue) {\n this.type = type;\n this.value = value;\n }\n\n static decode(selector: TFieldQuerySelector): FieldSelectorExpression {\n for (const [type, expr] of _.toPairs(selector)) {\n if (_.includes(TComparisonKeys, type)) {\n if (!isValue(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else if (_.includes(TValueListKeys, type) || _.includes(TValueSetKeys, type)) {\n if (!isValue(expr) || !_.isArray(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else {\n switch (type) {\n case '$not':\n {\n const _expr = expr ? { ...expr as any } : {};\n const keys = _.keys(_expr);\n if (keys.length !== 1 && !allFieldQueryKeys.includes(keys[0])) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, FieldSelectorExpression.decode(_expr));\n }\n case '$pattern':\n if (!_.isString(expr) && !_.isRegExp(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$starts':\n case '$ends':\n if (!_.isString(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$size':\n if (!_.isNumber(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$empty':\n if (!_.isBoolean(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$every':\n case '$some':\n return new FieldSelectorExpression(type, QuerySelector.decode(expr ? { ...expr as any } : {}, true));\n default: throw Error('Invalid expression');\n }\n }\n }\n throw Error('Invalid expression');\n }\n\n simplify(): FieldSelectorExpression {\n if (this.value instanceof QuerySelector) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n if (this.value instanceof FieldSelectorExpression) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n return this;\n }\n\n keyPaths(field?: string): string[] {\n let result: string[] = [];\n if (this.value instanceof QuerySelector) {\n result = this.value.keyPaths();\n } else if (this.value instanceof FieldSelectorExpression) {\n switch (this.type) {\n case '$every':\n case '$some':\n result = this.value.keyPaths();\n default:\n result = this.value.keyPaths();\n }\n }\n return field ? result.map(x => `${field}.${x}`) : result;\n }\n}\n\nexport class QueryFieldSelector extends QuerySelector {\n\n field: string;\n expr: FieldSelectorExpression;\n\n constructor(field: string, expr: FieldSelectorExpression) {\n super();\n this.field = field;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryFieldSelector(this.field, this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.field === '$' ? this.expr.keyPaths() : [this.field, ...this.expr.keyPaths(this.field)];\n }\n}\n\nexport class QueryExpressionSelector extends QuerySelector {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryExpressionSelector(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n}\n"],"names":["isValue"],"mappings":"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"}
1
+ {"version":3,"file":"index-CSNRyhjB.js","sources":["../../../src/internals/query/types/keys.ts","../../../src/server/query/dispatcher/parser/expressions.ts","../../../src/internals/query/types/selectors.ts","../../../src/server/query/dispatcher/parser/index.ts"],"sourcesContent":["//\n// keys.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 TComparisonKeys = [\n '$eq',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$ne',\n] as const;\n\nexport const TValueListKeys = [\n '$in',\n '$nin',\n] as const;\n\nexport const TValueSetKeys = [\n '$subset',\n '$superset',\n '$disjoint',\n '$intersect',\n] as const;\n\nexport const TConditionalKeys = [\n '$and',\n '$nor',\n '$or',\n] as const;\n\nexport const TDistanceKeys = [\n '$distance',\n '$innerProduct',\n '$negInnerProduct',\n '$cosineDistance',\n '$rectilinearDistance',\n] as const;\n","//\n// expressions.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 { TExpression } from '../../../../internals/query/types/expressions';\nimport { TComparisonKeys, TConditionalKeys, TDistanceKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\n\nexport class QueryExpression {\n\n static decode(expr: _.Many<TExpression>, dollerSign: boolean): QueryExpression {\n const exprs: QueryExpression[] = [];\n for (const selector of _.castArray(expr)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalExpression(key as any, _.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (_.includes(TComparisonKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n exprs.push(new QueryComparisonExpression(key as any, QueryExpression.decode(left as any, dollerSign), QueryExpression.decode(right as any, dollerSign)));\n } else if (_.includes(TDistanceKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n const _left = _.isArray(left) ? _.map(left, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(left as any, dollerSign);\n const _right = _.isArray(right) ? _.map(right, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(right as any, dollerSign);\n exprs.push(new QueryDistanceExpression(key as any, _.castArray(_left), _.castArray(_right)));\n } else if (key === '$not') {\n exprs.push(new QueryNotExpression(QueryExpression.decode(query as any, dollerSign)));\n } else if (key === '$array' && _.isArray(query)) {\n exprs.push(new QueryArrayExpression(_.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (key === '$key' && _.isString(query)) {\n if (dollerSign && query === '$') {\n exprs.push(new QueryKeyExpression(query));\n } else if (!query.startsWith('$')) {\n exprs.push(new QueryKeyExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n } else if (key === '$value' && isValue(query)) {\n exprs.push(new QueryValueExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QueryExpression;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalExpression('$and', exprs)).simplify();\n }\n\n simplify(): QueryExpression {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return this;\n }\n}\n\nexport class QueryCoditionalExpression extends QueryExpression {\n\n type: typeof TConditionalKeys[number];\n exprs: QueryExpression[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QueryExpression[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QueryExpression;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n case '$nor':\n case '$or':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryCoditionalExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryComparisonExpression extends QueryExpression {\n\n type: typeof TComparisonKeys[number];\n left: QueryExpression;\n right: QueryExpression;\n\n constructor(type: typeof TComparisonKeys[number], left: QueryExpression, right: QueryExpression) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryComparisonExpression(this.type, this.left.simplify(), this.right.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.left.keyPaths(),\n ...this.right.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryComparisonExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));\n }\n}\n\nexport class QueryNotExpression extends QueryExpression {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryNotExpression(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryNotExpression(this.expr.mapKey(callback));\n }\n}\n\nexport class QueryArrayExpression extends QueryExpression {\n\n exprs: QueryExpression[];\n\n constructor(exprs: QueryExpression[]) {\n super();\n this.exprs = exprs;\n }\n\n simplify() {\n return new QueryArrayExpression(_.map(this.exprs, x => x.simplify())) as QueryExpression;\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryArrayExpression(_.map(this.exprs, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryDistanceExpression extends QueryExpression {\n\n type: typeof TDistanceKeys[number];\n left: QueryExpression[];\n right: QueryExpression[];\n\n constructor(type: typeof TDistanceKeys[number], left: QueryExpression[], right: QueryExpression[]) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.simplify()), _.map(this.right, x => x.simplify()));\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ..._.flatMap(this.left, x => x.keyPaths()),\n ..._.flatMap(this.right, x => x.keyPaths()),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.mapKey(callback)), _.map(this.right, x => x.mapKey(callback)));\n }\n}\n\nexport class QueryKeyExpression extends QueryExpression {\n\n key: string;\n\n constructor(key: string) {\n super();\n this.key = key;\n }\n\n keyPaths(): string[] {\n return this.key === '$' ? [] : [this.key];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryKeyExpression(callback(this.key));\n }\n}\n\nexport class QueryValueExpression extends QueryExpression {\n\n value: TValue;\n\n constructor(value: TValue) {\n super();\n this.value = value;\n }\n}\n","//\n// selectors.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 { TValue } from '../../types';\nimport { TBooleanExpression } from './expressions';\nimport { TConditionalKeys, TValueListKeys, TValueSetKeys, TComparisonKeys } from './keys';\n\nexport const allFieldQueryKeys = [\n '$not', '$pattern', '$starts', '$ends', '$size', '$empty', '$every', '$some',\n ...TConditionalKeys,\n ...TValueListKeys,\n ...TValueSetKeys\n];\n\ntype TThisQuerySelector = { $?: TFieldQuerySelector; };\n\nexport type TFieldQuerySelector = {\n $not?: TFieldQuerySelector;\n $starts?: string;\n $ends?: string;\n $pattern?: RegExp | string;\n $size?: number;\n $empty?: boolean;\n $every?: TQuerySelector | TThisQuerySelector;\n $some?: TQuerySelector | TThisQuerySelector;\n} & {\n [x in (typeof TComparisonKeys)[number]]?: TValue;\n } & {\n [x in (typeof TValueListKeys)[number]]?: TValue[];\n } & {\n [x in (typeof TValueSetKeys)[number]]?: TValue[];\n };\n\nexport type TCoditionalQuerySelector = {\n [x in (typeof TConditionalKeys)[number]]?: TQuerySelector[];\n};\n\nexport type TQuerySelector = TCoditionalQuerySelector & {\n $expr?: TBooleanExpression\n} | {\n [x: string]: TFieldQuerySelector;\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 { QueryExpression } from './expressions';\nimport { TFieldQuerySelector, TQuerySelector, allFieldQueryKeys } from '../../../../internals/query/types/selectors';\nimport { TComparisonKeys, TConditionalKeys, TValueListKeys, TValueSetKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\n\nexport class QuerySelector {\n\n static decode(selectors: _.Many<TQuerySelector>, dollerSign: boolean = false): QuerySelector {\n const exprs: QuerySelector[] = [];\n for (const selector of _.castArray(selectors)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalSelector(key as any, _.map(query, x => QuerySelector.decode(x, dollerSign))));\n } else if (key === '$expr') {\n exprs.push(new QueryExpressionSelector(QueryExpression.decode(query as any, dollerSign)));\n } else if (dollerSign && key === '$' && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else if (!key.startsWith('$') && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QuerySelector;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalSelector('$and', exprs)).simplify();\n }\n\n simplify(): QuerySelector {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n}\n\nexport class QueryCoditionalSelector extends QuerySelector {\n\n type: typeof TConditionalKeys[number];\n exprs: QuerySelector[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QuerySelector[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QuerySelector;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n case '$nor':\n case '$or':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n}\n\nexport class FieldSelectorExpression {\n\n type: keyof TFieldQuerySelector;\n value: QuerySelector | FieldSelectorExpression | RegExp | TValue;\n\n constructor(type: keyof TFieldQuerySelector, value: QuerySelector | FieldSelectorExpression | RegExp | TValue) {\n this.type = type;\n this.value = value;\n }\n\n static decode(selector: TFieldQuerySelector): FieldSelectorExpression {\n for (const [type, expr] of _.toPairs(selector)) {\n if (_.includes(TComparisonKeys, type)) {\n if (!isValue(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else if (_.includes(TValueListKeys, type) || _.includes(TValueSetKeys, type)) {\n if (!isValue(expr) || !_.isArray(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else {\n switch (type) {\n case '$not':\n {\n const _expr = expr ? { ...expr as any } : {};\n const keys = _.keys(_expr);\n if (keys.length !== 1 && !allFieldQueryKeys.includes(keys[0])) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, FieldSelectorExpression.decode(_expr));\n }\n case '$pattern':\n if (!_.isString(expr) && !_.isRegExp(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$starts':\n case '$ends':\n if (!_.isString(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$size':\n if (!_.isNumber(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$empty':\n if (!_.isBoolean(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$every':\n case '$some':\n return new FieldSelectorExpression(type, QuerySelector.decode(expr ? { ...expr as any } : {}, true));\n default: throw Error('Invalid expression');\n }\n }\n }\n throw Error('Invalid expression');\n }\n\n simplify(): FieldSelectorExpression {\n if (this.value instanceof QuerySelector) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n if (this.value instanceof FieldSelectorExpression) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n return this;\n }\n\n keyPaths(field?: string): string[] {\n let result: string[] = [];\n if (this.value instanceof QuerySelector) {\n result = this.value.keyPaths();\n } else if (this.value instanceof FieldSelectorExpression) {\n switch (this.type) {\n case '$every':\n case '$some':\n result = this.value.keyPaths();\n default:\n result = this.value.keyPaths();\n }\n }\n return field ? result.map(x => `${field}.${x}`) : result;\n }\n}\n\nexport class QueryFieldSelector extends QuerySelector {\n\n field: string;\n expr: FieldSelectorExpression;\n\n constructor(field: string, expr: FieldSelectorExpression) {\n super();\n this.field = field;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryFieldSelector(this.field, this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.field === '$' ? this.expr.keyPaths() : [this.field, ...this.expr.keyPaths(this.field)];\n }\n}\n\nexport class QueryExpressionSelector extends QuerySelector {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryExpressionSelector(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n}\n"],"names":["isValue"],"mappings":"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"}
@@ -133,6 +133,7 @@ const decodeUpdateOp = (update) => {
133
133
  class TObject {
134
134
  static defaultReadonlyKeys = defaultObjectReadonlyKeys;
135
135
  static defaultKeys = defaultObjectKeys;
136
+ /** @internal */
136
137
  [_private.PVK];
137
138
  constructor(className, attributes) {
138
139
  const _attributes = _.isFunction(attributes) ? attributes(this) : attributes ?? {};
@@ -194,6 +195,15 @@ class TObject {
194
195
  yield [key, this.get(key)];
195
196
  }
196
197
  }
198
+ /** @internal */
199
+ *_set_entries() {
200
+ for (const [key, op] of _.entries(this[_private.PVK].mutated)) {
201
+ for (const [_op, value] of _.entries(op)) {
202
+ if (_op === '$set')
203
+ yield [key, value];
204
+ }
205
+ }
206
+ }
197
207
  toObject() {
198
208
  const toObject = (value) => {
199
209
  if (isPrimitiveValue(value))
@@ -341,4 +351,4 @@ exports.isShape = isShape;
341
351
  exports.isValue = isValue;
342
352
  exports.isVector = isVector;
343
353
  exports.shapePaths = shapePaths;
344
- //# sourceMappingURL=index-C6zdNpc_.js.map
354
+ //# sourceMappingURL=index-CVutVPmd.js.map