proto.io 0.0.145 → 0.0.147
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 +3 -3
- package/dist/adapters/file/database.js +1 -1
- package/dist/adapters/file/database.js.map +1 -1
- package/dist/adapters/file/database.mjs +1 -1
- package/dist/adapters/file/database.mjs.map +1 -1
- package/dist/adapters/file/filesystem.d.ts +3 -3
- package/dist/adapters/file/filesystem.js +1 -1
- package/dist/adapters/file/filesystem.js.map +1 -1
- package/dist/adapters/file/filesystem.mjs +1 -1
- package/dist/adapters/file/filesystem.mjs.map +1 -1
- package/dist/adapters/file/google-cloud-storage.d.ts +3 -3
- package/dist/adapters/file/google-cloud-storage.js +1 -1
- package/dist/adapters/file/google-cloud-storage.js.map +1 -1
- package/dist/adapters/file/google-cloud-storage.mjs +1 -1
- package/dist/adapters/file/google-cloud-storage.mjs.map +1 -1
- 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 +19 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -18
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{index-i4lOAqi2.d.ts → index-BDB4idmt.d.ts} +3 -3
- package/dist/internals/index-BDB4idmt.d.ts.map +1 -0
- package/dist/internals/{index-DW9_3n_K.d.ts → index-BWztjrw_.d.ts} +4 -4
- package/dist/internals/index-BWztjrw_.d.ts.map +1 -0
- package/dist/internals/index-BqFdBhFc.js.map +1 -1
- package/dist/internals/index-C6zdNpc_.js.map +1 -1
- package/dist/internals/{index-D5nf79vF.js → index-CT01T3qs.js} +13 -13
- package/dist/internals/{index-D5nf79vF.js.map → index-CT01T3qs.js.map} +1 -1
- package/dist/internals/{index-ZIegYNKT.mjs → index-Do-zNOpD.mjs} +13 -13
- package/dist/internals/{index-ZIegYNKT.mjs.map → index-Do-zNOpD.mjs.map} +1 -1
- package/dist/internals/index-EOtjV6U_.mjs.map +1 -1
- package/dist/internals/{index-DWyLziGT.d.ts → index-bbPCIbir.d.ts} +3 -3
- package/dist/internals/index-bbPCIbir.d.ts.map +1 -0
- package/dist/internals/index-be1VYBY2.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/internals/index-DW9_3n_K.d.ts.map +0 -1
- package/dist/internals/index-DWyLziGT.d.ts.map +0 -1
- package/dist/internals/index-i4lOAqi2.d.ts.map +0 -1
|
@@ -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-BWztjrw_.js';
|
|
2
2
|
|
|
3
3
|
type FileStorageOptions = {
|
|
4
4
|
chunkSize?: number;
|
|
@@ -13,7 +13,7 @@ declare abstract class FileStorageBase implements TFileStorage {
|
|
|
13
13
|
start: number;
|
|
14
14
|
data: Buffer | Uint8Array | PromiseLike<Buffer | Uint8Array>;
|
|
15
15
|
}, void>;
|
|
16
|
-
abstract
|
|
16
|
+
abstract destroy<E>(proto: ProtoService<E>, id: string): PromiseLike<void>;
|
|
17
17
|
create<E>(proto: ProtoService<E>, stream: BinaryData | AsyncIterable<BinaryData>, info: TFileInfo, maxUploadSize: number): Promise<{
|
|
18
18
|
_id: string;
|
|
19
19
|
size: 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-BDB4idmt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BDB4idmt.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -381,7 +381,7 @@ interface TObject {
|
|
|
381
381
|
save(options?: ExtraOptions<boolean, ProtoType<any>> & {
|
|
382
382
|
cascadeSave?: boolean;
|
|
383
383
|
}): PromiseLike<this>;
|
|
384
|
-
|
|
384
|
+
destroy(options?: ExtraOptions<boolean, ProtoType<any>>): PromiseLike<this>;
|
|
385
385
|
}
|
|
386
386
|
declare class TObject {
|
|
387
387
|
static defaultReadonlyKeys: string[];
|
|
@@ -515,7 +515,7 @@ interface TFileStorage {
|
|
|
515
515
|
_id: string;
|
|
516
516
|
size: number;
|
|
517
517
|
}>;
|
|
518
|
-
|
|
518
|
+
destroy<E>(proto: ProtoService<E>, id: string): PromiseLike<void>;
|
|
519
519
|
fileData<E>(proto: ProtoService<E>, id: string, start?: number, end?: number): AsyncIterable<BinaryData>;
|
|
520
520
|
}
|
|
521
521
|
|
|
@@ -678,7 +678,7 @@ declare class ProtoInternal<Ext, P extends ProtoService<Ext>> implements ProtoIn
|
|
|
678
678
|
saveFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
|
|
679
679
|
deleteFile(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Promise<TFile>;
|
|
680
680
|
fileData(proto: P, object: TFile, options?: ExtraOptions<boolean, P>): Readable;
|
|
681
|
-
|
|
681
|
+
destroyFileData(proto: P, id: string): void;
|
|
682
682
|
jwtSign(payload: any, options: 'login' | 'upload' | jwt.SignOptions): string;
|
|
683
683
|
jwtVarify(token: string, options?: 'login' | 'upload' | jwt.VerifyOptions): jwt.JwtPayload | undefined;
|
|
684
684
|
notify(proto: P, data: Record<string, _TValue> & {
|
|
@@ -781,4 +781,4 @@ declare class ProtoService<Ext> extends ProtoType<Ext> {
|
|
|
781
781
|
}
|
|
782
782
|
|
|
783
783
|
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-
|
|
784
|
+
//# sourceMappingURL=index-BWztjrw_.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BWztjrw_.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-C6zdNpc_.js","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 destory(options?: ExtraOptions<boolean, ProtoType<any>>): PromiseLike<this>;\n}\n\nexport class TObject {\n\n static defaultReadonlyKeys = defaultObjectReadonlyKeys;\n static defaultKeys = defaultObjectKeys;\n\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 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":["Decimal","PVK"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-C6zdNpc_.js","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 [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 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":["Decimal","PVK"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwCO,MAAM,WAAW,GAAG,CAAC,CAAmB,KAAiC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;MAC1J,QAAQ,GAAG,CAAC,CAAmB,KAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;MACnG,WAAW,GAAG,CAAC,CAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE;MACrE,OAAO,GAAG,CAAC,CAAmB,KAA6B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;MAChG,SAAS,GAAG,CAAC,CAAmB,KAA+B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;MACtG,UAAU,GAAG,CAAC,CAAmB,KAAgC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;MACzG,OAAO,GAAG,CAAC,CAAmB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO;AAEzH,MAAA,UAAU,GAAG,CAAC,CAAoB,KAGxC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,MAC7B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAG,EAAA,CAAC,IAAI,CAAC,CAAC,IAAI,CAAE,CAAA,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAC1G,EAAE;AAWU,MAAA,qBAAqB,GAAqC;AACrE,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;EACf;AAEK,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACtF,MAAM,iBAAiB,GAAG,CAAC,GAAG,yBAAyB,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;;ACnGlG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYa,MAAA,gBAAgB,GAAG,CAAC,CAAM,KAA0B;AAC/D,IAAA,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAC/F,IAAI,CAAC,YAAYA,eAAO;AAAE,QAAA,OAAO,IAAI,CAAC;AACtC,IAAA,OAAO,KAAK,CAAC;AACf,EAAC;AAEY,MAAA,OAAO,GAAG,CAAC,CAAM,KAAiB;AAC7C,IAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,OAAO;AAAE,QAAA,OAAO,IAAI,CAAC;AAC7D,IAAA,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAA,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAA,OAAO,KAAK,CAAC;AACf,EAAC;AAEM,MAAM,UAAU,GAAG,CAAmB,CAAI,KAAO;AACtD,IAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,OAAO;AAAE,QAAA,OAAO,CAAC,CAAC;AAC1D,IAAA,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAM,CAAC;AACxD,IAAA,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAM,CAAC;AACjD,CAAC,CAAA;AAEY,MAAA,YAAY,GAAG,CAAC,KAAc,KAAa;IACtD,IAAI,gBAAgB,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,IAAIA,eAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAA,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;QACpC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;KAC7D,EAAE,EAAS,CAAC,CAAC;AAChB,EAAE;AAEW,MAAA,YAAY,GAAG,CAAC,KAAa,KAAa;IACrD,IAAI,KAAK,YAAY,OAAO;AAAE,QAAA,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC/D,IAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IAC3D,IAAI,KAAK,YAAYA,eAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpE,IAAI,gBAAgB,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAA,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;QACpC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;KACtD,EAAE,EAAS,CAAC,CAAC;AAChB,EAAE;AAEW,MAAA,cAAc,GAAG,CAAC,MAAiB,KAAI;IAClD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAChE,IAAA,OAAO,KAAK,CAAC,CAAC,CAA2C,CAAC;AAC5D,EAAC;MASY,OAAO,CAAA;AAElB,IAAA,OAAO,mBAAmB,GAAG,yBAAyB,CAAC;AACvD,IAAA,OAAO,WAAW,GAAG,iBAAiB,CAAC;IAEvC,CAACC,YAAG,EAKF;IAEF,WACE,CAAA,SAAiB,EACjB,UAAiF,EAAA;QAEjF,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,EAAE,CAAC;QACnF,IAAI,CAACA,YAAG,CAAC,GAAG;YACV,SAAS;AACT,YAAA,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;AACnC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;SACV,CAAA;KACF;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,SAAS,CAAC;KAC5B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,UAAU,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,CAAC;KACzC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,GAAa,CAAC;KAC3C;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,WAAmB,CAAC;KACjD;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,WAAmB,CAAC;KACjD;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,GAAa,CAAC;KAC3C;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,GAAa,CAAC;KAC3C;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KAChC;IAED,IAAI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KAChC;IAED,GAAG,GAAA;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;SACpC,CAAC;KACH;AAED,IAAA,MAAM,CAAC,KAA4B,EAAA;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;AAED,IAAA,UAAU,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,WAAW,CAAC,KAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC3B;IAED,IAAI,GAAA;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7H;AAED,IAAA,CAAC,OAAO,GAAA;QACN,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAkB,CAAC;SAC7C;KACF;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAa,KAAa;YAC1C,IAAI,gBAAgB,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;YAC1C,IAAI,KAAK,YAAY,OAAO;AAAE,gBAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,SAAC,CAAA;AACD,QAAA,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzE;AAEO,IAAA,MAAM,CAAC,GAAW,EAAA;QACxB,IAAI,KAAK,GAAW,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC7B,IAAI,gBAAgB,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzC,YAAA,IAAI,KAAK,YAAY,OAAO,EAAE;AAC5B,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACtB;iBAAM;gBACL,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACzB;SACF;AACD,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED,IAAA,GAAG,CAAmB,GAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAA,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,QAAA,OAAO,EAAE,KAAK,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACjD;IAED,GAAG,CAAmB,GAAgB,EAAE,KAAyB,EAAA;AAC/D,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;KAClD;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,CAAC;KACtC;IAED,SAAS,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,SAAS,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,QAAQ,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,MAAM,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,GAAG,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACnD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,GAAG,CAAmB,GAAgB,EAAE,KAAa,EAAA;AACnD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1C;IAED,QAAQ,CAAmB,GAAgB,EAAE,MAAgB,EAAA;AAC3D,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;KAChD;IAED,IAAI,CAAmB,GAAgB,EAAE,MAAgB,EAAA;AACvD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KAC5C;IAED,SAAS,CAAmB,GAAgB,EAAE,MAAgB,EAAA;AAC5D,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;KACjD;AAED,IAAA,QAAQ,CAAmB,GAAgB,EAAE,KAAK,GAAG,CAAC,EAAA;AACpD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KAC/C;AAED,IAAA,OAAO,CAAmB,GAAgB,EAAE,KAAK,GAAG,CAAC,EAAA;AACnD,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,OAAO;AAC1E,QAAA,IAAI,CAACA,YAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAC9C;IAED,MAAM,KAAK,CAAC,OAAoC,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;KACrE;AAED,IAAA,MAAM,aAAa,CAAC,IAAc,EAAE,OAAoC,EAAA;AACtE,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,YAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAC5D,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACtE;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -534,7 +534,7 @@ const applyObjectMethods = (object, proto) => {
|
|
|
534
534
|
return proto[_private.PVK].saveFile(proto, this, options);
|
|
535
535
|
},
|
|
536
536
|
},
|
|
537
|
-
|
|
537
|
+
destroy: {
|
|
538
538
|
value(options) {
|
|
539
539
|
return proto[_private.PVK].deleteFile(proto, this, options);
|
|
540
540
|
},
|
|
@@ -605,14 +605,14 @@ const applyObjectMethods = (object, proto) => {
|
|
|
605
605
|
return this;
|
|
606
606
|
},
|
|
607
607
|
},
|
|
608
|
-
|
|
608
|
+
destroy: {
|
|
609
609
|
async value(options) {
|
|
610
610
|
const deleted = await query()
|
|
611
611
|
.equalTo('_id', this.objectId)
|
|
612
612
|
.includes(...this.keys())
|
|
613
613
|
.deleteOne(options);
|
|
614
614
|
if (!deleted)
|
|
615
|
-
throw Error('Unable to
|
|
615
|
+
throw Error('Unable to destroy document');
|
|
616
616
|
this[_private.PVK].attributes = deleted.attributes;
|
|
617
617
|
this[_private.PVK].mutated = {};
|
|
618
618
|
return this;
|
|
@@ -1054,7 +1054,7 @@ class Service {
|
|
|
1054
1054
|
this.sockets.push(socket);
|
|
1055
1055
|
let disconnect = false;
|
|
1056
1056
|
let listeners = [];
|
|
1057
|
-
let
|
|
1057
|
+
let destroyCallbacks = [];
|
|
1058
1058
|
socket.on('connect_error', () => {
|
|
1059
1059
|
if (!disconnect && !socket.active)
|
|
1060
1060
|
socket.connect();
|
|
@@ -1068,11 +1068,11 @@ class Service {
|
|
|
1068
1068
|
callback(payload);
|
|
1069
1069
|
}
|
|
1070
1070
|
});
|
|
1071
|
-
const
|
|
1071
|
+
const destroy = () => {
|
|
1072
1072
|
disconnect = true;
|
|
1073
1073
|
this.sockets = this.sockets.filter(x => x !== socket);
|
|
1074
1074
|
socket.disconnect();
|
|
1075
|
-
for (const callback of
|
|
1075
|
+
for (const callback of destroyCallbacks) {
|
|
1076
1076
|
callback();
|
|
1077
1077
|
}
|
|
1078
1078
|
};
|
|
@@ -1083,11 +1083,11 @@ class Service {
|
|
|
1083
1083
|
return () => {
|
|
1084
1084
|
listeners = listeners.filter(x => x !== callback);
|
|
1085
1085
|
if (_.isEmpty(listeners))
|
|
1086
|
-
|
|
1086
|
+
destroy();
|
|
1087
1087
|
};
|
|
1088
1088
|
},
|
|
1089
|
-
|
|
1090
|
-
|
|
1089
|
+
onDestroy: (callback) => {
|
|
1090
|
+
destroyCallbacks.push(callback);
|
|
1091
1091
|
},
|
|
1092
1092
|
};
|
|
1093
1093
|
}
|
|
@@ -1346,10 +1346,10 @@ class ProtoClientInternal {
|
|
|
1346
1346
|
});
|
|
1347
1347
|
}
|
|
1348
1348
|
listen(proto, callback) {
|
|
1349
|
-
const { socket, listen,
|
|
1349
|
+
const { socket, listen, onDestroy } = this.socket ?? this.service.socket();
|
|
1350
1350
|
if (_.isNil(this.socket)) {
|
|
1351
|
-
this.socket = { socket, listen,
|
|
1352
|
-
|
|
1351
|
+
this.socket = { socket, listen, onDestroy };
|
|
1352
|
+
onDestroy(() => { this.socket = undefined; });
|
|
1353
1353
|
}
|
|
1354
1354
|
return {
|
|
1355
1355
|
socket,
|
|
@@ -1480,4 +1480,4 @@ exports.isQuery = isQuery;
|
|
|
1480
1480
|
exports.isRole = isRole;
|
|
1481
1481
|
exports.isUser = isUser;
|
|
1482
1482
|
exports.serialize = serialize;
|
|
1483
|
-
//# sourceMappingURL=index-
|
|
1483
|
+
//# sourceMappingURL=index-CT01T3qs.js.map
|