@tsed/adapters 7.18.3-rc.1 → 7.18.4

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/.eslintignore ADDED
@@ -0,0 +1,13 @@
1
+ node_modules
2
+ docs
3
+ docs-references
4
+ lib
5
+ dist
6
+ coverage
7
+ .nyc_output
8
+ *-lock.json
9
+ *.lock
10
+ benchmarks.*
11
+ **/generated
12
+
13
+ **/*.js
package/.eslintrc.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require("@tsed/eslint/node.js");
package/jest.config.js CHANGED
@@ -2,13 +2,17 @@
2
2
  // https://jestjs.io/docs/en/configuration.html
3
3
 
4
4
  module.exports = {
5
- ...require("@tsed/jest-config")(__dirname, "adapters"),
5
+ ...require("@tsed/jest-config"),
6
+ roots: ["<rootDir>/src", "<rootDir>/test"],
7
+ moduleNameMapper: {
8
+ "@tsed/adapters": "<rootDir>/src/index.ts"
9
+ },
6
10
  coverageThreshold: {
7
11
  global: {
8
- branches: 70,
9
- functions: 70,
10
- lines: 70,
11
- statements: 70
12
+ branches: 88.31,
13
+ functions: 100,
14
+ lines: 100,
15
+ statements: 100
12
16
  }
13
17
  }
14
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FileSyncAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FileSyncAdapter.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAClC,iCAA+E;AAC/E,uCAAuC;AACvC,0DAAwB;AACxB,+EAA+C;AAC/C,+BAA6B;AAE7B,iDAA0D;AAQ1D,IAAa,eAAe,GAA5B,MAAa,eAAwC,SAAQ,2BAAe;IAC1E,YAAkB,OAA0C,EAAmB,aAA4B;QACzG,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,kBAAQ,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,GAAG,IAAA,eAAG,EAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SACvB;IACH,CAAC;CACF,CAAA;AArBY,eAAe;IAF3B,IAAA,eAAU,GAAE;IACZ,IAAA,UAAK,EAAC,kBAAa,CAAC,QAAQ,CAAC;IAEf,mBAAA,SAAI,CAAA;IAA8C,mBAAA,IAAA,kBAAa,GAAE,CAAA;;GADnE,eAAe,CAqB3B;AArBY,0CAAe","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {Configuration, Injectable, Opts, ProviderScope, Scope} from \"@tsed/di\";\nimport {ensureDirSync} from \"fs-extra\";\nimport low from \"lowdb\";\nimport FileSync from \"lowdb/adapters/FileSync\";\nimport {dirname} from \"path\";\nimport {AdapterConstructorOptions} from \"../domain/Adapter\";\nimport {AdapterModel, LowDbAdapter} from \"./LowDbAdapter\";\n\nexport interface FileSyncAdapterConstructorOptions extends AdapterConstructorOptions {\n readOnly: true;\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class FileSyncAdapter<T extends AdapterModel> extends LowDbAdapter<T> {\n constructor(@Opts options: FileSyncAdapterConstructorOptions, @Configuration() configuration: Configuration) {\n super(options, configuration);\n\n ensureDirSync(dirname(this.dbFilePath));\n\n const file = new FileSync<{collection: T[]}>(this.dbFilePath);\n\n this.db = low(file);\n this.db\n .defaults({\n collectionName: this.collectionName,\n modelName: nameOf(this.model),\n collection: []\n })\n .write();\n\n if (options.readOnly) {\n file.write = () => {};\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FileSyncAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FileSyncAdapter.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAClC,iCAA+E;AAC/E,uCAAuC;AACvC,0DAAwB;AACxB,+EAA+C;AAC/C,+BAA6B;AAE7B,iDAA0D;AAQnD,IAAM,eAAe,GAArB,MAAM,eAAwC,SAAQ,2BAAe;IAC1E,YAAkB,OAA0C,EAAmB,aAA4B;QACzG,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,kBAAQ,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,GAAG,IAAA,eAAG,EAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SACvB;IACH,CAAC;CACF,CAAA;AArBY,eAAe;IAF3B,IAAA,eAAU,GAAE;IACZ,IAAA,UAAK,EAAC,kBAAa,CAAC,QAAQ,CAAC;IAEf,mBAAA,SAAI,CAAA;IAA8C,mBAAA,IAAA,kBAAa,GAAE,CAAA;;GADnE,eAAe,CAqB3B;AArBY,0CAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"LowDbAdapter.js","sourceRoot":"","sources":["../../../src/adapters/LowDbAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import {cleanObject} from \"@tsed/core\";\nimport isMatch from \"lodash/isMatch\";\nimport low from \"lowdb\";\nimport {v4 as uuid} from \"uuid\";\nimport {Adapter} from \"../domain/Adapter\";\n\nexport interface AdapterModel {\n _id: string;\n expires_at?: Date;\n\n [key: string]: any;\n}\n\nexport class LowDbAdapter<T extends AdapterModel> extends Adapter<T> {\n protected db: low.LowdbSync<{collection: T[]}>;\n\n get collection() {\n return this.db.get(\"collection\");\n }\n\n protected get dbFilePath() {\n const lowdbDir = this.configuration.get(\"adapters.lowdbDir\", \".db\");\n return `${lowdbDir}/${this.collectionName}.json`;\n }\n\n public async create(payload: Partial<T>, expiresAt?: Date): Promise<T> {\n if (expiresAt) {\n payload.expires_at = expiresAt;\n }\n\n payload._id = uuid();\n\n await this.validate(payload as T);\n\n await this.collection.push(this.serialize(payload) as T).write();\n\n return this.deserialize(payload);\n }\n\n public async upsert(id: string, payload: T, expiresAt?: Date): Promise<T> {\n let item = await this.findById(id);\n\n if (!item) {\n payload._id = id || uuid();\n\n await this.validate(payload as T);\n\n const item = this.serialize(payload);\n item.expires_at = expiresAt;\n\n await this.collection.push(item).write();\n\n return this.deserialize(payload);\n }\n\n return (await this.update(id, payload, expiresAt)) as T;\n }\n\n public async update(id: string, payload: T, expiresAt?: Date): Promise<T | undefined> {\n return this.updateOne({_id: id}, payload, expiresAt);\n }\n\n public async updateOne(predicate: Partial<T & any>, payload: T, expiresAt?: Date): Promise<T | undefined> {\n let index = this.collection.findIndex(cleanObject(predicate)).value();\n\n if (index === -1) {\n return;\n }\n\n let item = this.deserialize(this.collection.get(index).value());\n\n Object.assign(item, payload, {_id: item._id});\n\n await this.validate(item as T);\n\n item.expires_at = expiresAt || item.expires_at;\n\n await this.collection.set(index, item).write();\n\n return this.deserialize(item);\n }\n\n async findOne(predicate: Partial<T & any>): Promise<T | undefined> {\n const item = this.collection.find(cleanObject(predicate)).value();\n\n return this.deserialize(item);\n }\n\n async findById(_id: string): Promise<T | undefined> {\n return this.findOne({_id});\n }\n\n public async findAll(predicate: Partial<T & any> = {}): Promise<T[]> {\n return this.collection\n .filter(cleanObject(predicate))\n .value()\n .map((item) => this.deserialize(item));\n }\n\n public async deleteOne(predicate: Partial<T & any>): Promise<T | undefined> {\n const item = this.collection.find(cleanObject(predicate)).value();\n\n if (item) {\n this.collection.remove(({_id}) => _id === item._id).write();\n\n return this.deserialize(item);\n }\n }\n\n public async deleteById(_id: string): Promise<T | undefined> {\n return this.deleteOne({_id} as any);\n }\n\n public async deleteMany(predicate: Partial<T>): Promise<T[]> {\n let removedItems: T[] = [];\n\n await this.collection\n .remove((item) => {\n if (isMatch(item, cleanObject(predicate))) {\n removedItems.push(this.deserialize(item));\n return true;\n }\n return false;\n })\n .write();\n\n return removedItems;\n }\n}\n"]}
1
+ {"version":3,"file":"LowDbAdapter.js","sourceRoot":"","sources":["../../../src/adapters/LowDbAdapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryAdapter.js","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":";;;;AAAA,iCAA+E;AAC/E,0DAAwB;AACxB,2EAA2C;AAC3C,iDAA0D;AAI1D,IAAa,aAAa,GAA1B,MAAa,aAAsC,SAAQ,2BAAe;IACxE,YAAkB,OAAY,EAAmB,aAA4B;QAC3E,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAI,CAAC,EAAE,GAAG,IAAA,eAAG,EAAC,IAAI,gBAAM,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;IACb,CAAC;CACF,CAAA;AAXY,aAAa;IAFzB,IAAA,eAAU,GAAE;IACZ,IAAA,UAAK,EAAC,kBAAa,CAAC,QAAQ,CAAC;IAEf,mBAAA,SAAI,CAAA;IAAgB,mBAAA,IAAA,kBAAa,GAAE,CAAA;;GADrC,aAAa,CAWzB;AAXY,sCAAa","sourcesContent":["import {Configuration, Injectable, Opts, ProviderScope, Scope} from \"@tsed/di\";\nimport low from \"lowdb\";\nimport Memory from \"lowdb/adapters/Memory\";\nimport {AdapterModel, LowDbAdapter} from \"./LowDbAdapter\";\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class MemoryAdapter<T extends AdapterModel> extends LowDbAdapter<T> {\n constructor(@Opts options: any, @Configuration() configuration: Configuration) {\n super(options, configuration);\n\n this.db = low(new Memory<{collection: T[]}>(this.dbFilePath));\n this.db\n .defaults({\n collection: []\n })\n .write();\n }\n}\n"]}
1
+ {"version":3,"file":"MemoryAdapter.js","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":";;;;AAAA,iCAA+E;AAC/E,0DAAwB;AACxB,2EAA2C;AAC3C,iDAA0D;AAInD,IAAM,aAAa,GAAnB,MAAM,aAAsC,SAAQ,2BAAe;IACxE,YAAkB,OAAY,EAAmB,aAA4B;QAC3E,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAI,CAAC,EAAE,GAAG,IAAA,eAAG,EAAC,IAAI,gBAAM,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;IACb,CAAC;CACF,CAAA;AAXY,aAAa;IAFzB,IAAA,eAAU,GAAE;IACZ,IAAA,UAAK,EAAC,kBAAa,CAAC,QAAQ,CAAC;IAEf,mBAAA,SAAI,CAAA;IAAgB,mBAAA,IAAA,kBAAa,GAAE,CAAA;;GADrC,aAAa,CAWzB;AAXY,sCAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../src/decorators/indexed.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAE1C,SAAgB,OAAO;IACrB,OAAO,IAAA,qBAAY,EAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,0BAIC","sourcesContent":["import {JsonEntityFn} from \"@tsed/schema\";\n\nexport function Indexed(): PropertyDecorator {\n return JsonEntityFn((entity) => {\n entity.store.set(\"adapter:indexed\", {});\n });\n}\n"]}
1
+ {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../src/decorators/indexed.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAE1C,SAAgB,OAAO;IACrB,OAAO,IAAA,qBAAY,EAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,0BAIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"injectAdapter.js","sourceRoot":"","sources":["../../../src/decorators/injectAdapter.ts"],"names":[],"mappings":";;;AAAA,qCAA0E;AAC1E,iCAAgC;AAChC,mDAAoE;AAEpE,SAAS,UAAU,CAAC,IAAW;IAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC,EAAE;YAClB,OAAO;gBACL,GAAG,OAAO;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC;SACH;QAED,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAC7C,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AASD,SAAgB,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,OAAO,GAAyB,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAA,WAAM,EAAC,mBAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAA,mBAAY,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;YACxC,KAAK;gBACH,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,SAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEnE,OAAO,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAfD,sCAeC","sourcesContent":["import {classOf, descriptorOf, isClass, isString, Type} from \"@tsed/core\";\nimport {Inject} from \"@tsed/di\";\nimport {AdapterInvokeOptions, Adapters} from \"../services/Adapters\";\n\nfunction mapOptions(args: any[]): AdapterInvokeOptions {\n return args.reduce((options: AdapterInvokeOptions, item, index) => {\n if (isString(item)) {\n return {\n ...options,\n collectionName: item\n };\n }\n\n if (isClass(item) && classOf(item) !== Object) {\n return {\n ...options,\n model: item\n };\n }\n\n return {...options, ...item};\n }, {});\n}\n\nexport function InjectAdapter(options: AdapterInvokeOptions): PropertyDecorator;\nexport function InjectAdapter(model: Type<any>, options?: Partial<Omit<AdapterInvokeOptions, \"client\">>): PropertyDecorator;\nexport function InjectAdapter(\n collectionName: string,\n model: Type<any>,\n options?: Partial<Omit<AdapterInvokeOptions, \"collectionName\" | \"client\">>\n): PropertyDecorator;\nexport function InjectAdapter(...args: any[]): PropertyDecorator {\n const options: AdapterInvokeOptions = mapOptions(args);\n\n return (target) => {\n Inject(Adapters)(target, \"$adapters\");\n const descriptor = descriptorOf(target, \"$onInit\");\n\n Reflect.defineProperty(target, \"$onInit\", {\n value() {\n this.adapter = (this.$adapters as Adapters).invokeAdapter(options);\n\n return descriptor && descriptor.value && descriptor.value.call(this);\n }\n });\n };\n}\n"]}
1
+ {"version":3,"file":"injectAdapter.js","sourceRoot":"","sources":["../../../src/decorators/injectAdapter.ts"],"names":[],"mappings":";;;AAAA,qCAA0E;AAC1E,iCAAgC;AAChC,mDAAoE;AAEpE,SAAS,UAAU,CAAC,IAAW;IAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC,EAAE;YAClB,OAAO;gBACL,GAAG,OAAO;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC;SACH;QAED,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAC7C,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AASD,SAAgB,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,OAAO,GAAyB,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAA,WAAM,EAAC,mBAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAA,mBAAY,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;YACxC,KAAK;gBACH,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,SAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEnE,OAAO,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAfD,sCAeC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../../src/domain/Adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import {AjvService} from \"@tsed/ajv\";\nimport {classOf, isArray, isPlainObject, nameOf, Type} from \"@tsed/core\";\nimport {Configuration, Inject, Opts} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, JsonSerializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {getPropertiesStores, JsonEntityStore} from \"@tsed/schema\";\n\nexport interface AdapterConstructorOptions<T = any> extends Record<string, any> {\n model: Type<T> | Object;\n collectionName?: string;\n useAlias?: string;\n indexes?: {\n [propertyKey: string]: Record<string, any>;\n };\n}\n\nfunction getIndexes(model: any) {\n return [...getPropertiesStores(model).entries()]\n .filter(([, entity]) => entity.store.has(\"adapter:indexed\"))\n .map(([propertyKey, entity]) => {\n return {\n propertyKey: String(propertyKey),\n options: entity.store.get(\"adapter:indexed\")\n };\n });\n}\n\nfunction mapIndexes(indexes: {[p: string]: Record<string, any>} | {propertyKey: string; options: any}[]) {\n return Object.entries(indexes).reduce((indexes: any[], [propertyKey, options]) => {\n return indexes.concat({\n propertyKey,\n options\n });\n }, []);\n}\n\nfunction pluralize(name: string) {\n return name.slice(-1) === \"y\" ? `${name.slice(0, name.length - 1)}ies` : name + \"s\";\n}\n\nexport abstract class Adapter<Model = any> {\n readonly model: Type<Model> | Object;\n readonly collectionName: string;\n readonly indexes: {propertyKey: string; options: any}[];\n readonly useAlias: boolean = false;\n\n @Inject()\n protected ajvService: AjvService;\n\n constructor(@Opts options: AdapterConstructorOptions, @Configuration() protected configuration: Configuration) {\n this.model = options.model;\n this.collectionName = options.collectionName || pluralize(nameOf(options.model));\n\n let indexes = options.indexes || configuration.get(`adapters.${this.collectionName}.indexes`) || getIndexes(this.model);\n\n if (!isArray(indexes)) {\n indexes = mapIndexes(indexes);\n }\n\n this.indexes = indexes;\n this.useAlias = !!options.useAlias;\n }\n\n async validate(value: Model): Promise<void> {\n if (this.getModel()) {\n await this.ajvService.validate(this.serialize(value), {\n useAlias: this.useAlias,\n type: this.model\n });\n }\n }\n\n abstract create(value: Partial<Omit<Model, \"_id\">>, expiresAt?: Date): Promise<Model>;\n\n abstract update(id: string, value: Model, expiresAt?: Date): Promise<Model | undefined>;\n\n abstract updateOne(predicate: Partial<Model>, value: Partial<Model>, expiresAt?: Date): Promise<Model | undefined>;\n\n abstract upsert(id: string, value: Model, expiresAt?: Date): Promise<Model>;\n\n abstract findOne(predicate: Partial<Model>): Promise<Model | undefined>;\n\n abstract findById(id: string): Promise<Model | undefined>;\n\n abstract findAll(predicate?: Partial<Model>): Promise<Model[]>;\n\n abstract deleteOne(predicate: Partial<Model>): Promise<Model | undefined>;\n\n abstract deleteMany(predicate: Partial<Model>): Promise<Model[]>;\n\n abstract deleteById(id: string): Promise<Model | undefined>;\n\n getModel() {\n return (this.model as unknown) !== Object ? this.model : undefined;\n }\n\n protected deserialize(obj: any, opts?: JsonDeserializerOptions) {\n return deserialize(obj, {\n useAlias: this.useAlias,\n ...opts,\n type: this.getModel()\n });\n }\n\n protected serialize(obj: any, opts?: JsonSerializerOptions) {\n return serialize(obj, {\n useAlias: this.useAlias,\n ...opts,\n type: isPlainObject(obj) ? this.getModel() : classOf(obj)\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../../src/domain/Adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptersSettings.js","sourceRoot":"","sources":["../../../src/domain/AdaptersSettings.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Adapter} from \"./Adapter\";\n\nexport interface AdaptersSettings {\n /**\n * Injectable service to manage database connexion\n */\n Adapter?: Type<Adapter>;\n /**\n *\n */\n lowdbDir?: string;\n /**\n * Use the connection name for the RedisAdapter.\n */\n connectionName?: string;\n\n [key: string]: any;\n}\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n adapters: AdaptersSettings;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AdaptersSettings.js","sourceRoot":"","sources":["../../../src/domain/AdaptersSettings.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qEAA2C;AAC3C,kEAAwC;AACxC,mEAAyC;AACzC,+DAAqC;AACrC,qEAA2C;AAC3C,2DAAiC;AACjC,oEAA0C;AAC1C,8DAAoC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./adapters/FileSyncAdapter\";\nexport * from \"./adapters/LowDbAdapter\";\nexport * from \"./adapters/MemoryAdapter\";\nexport * from \"./decorators/indexed\";\nexport * from \"./decorators/injectAdapter\";\nexport * from \"./domain/Adapter\";\nexport * from \"./domain/AdaptersSettings\";\nexport * from \"./services/Adapters\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qEAA2C;AAC3C,kEAAwC;AACxC,mEAAyC;AACzC,+DAAqC;AACrC,qEAA2C;AAC3C,2DAAiC;AACjC,oEAA0C;AAC1C,8DAAoC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Adapters.js","sourceRoot":"","sources":["../../../src/services/Adapters.ts"],"names":[],"mappings":";;;;AAAA,qCAAgC;AAChC,iCAAyF;AACzF,6DAAwD;AAQxD,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAEnB,QAAQ,CAAkB;IAGhB,OAAO,CAAgB;IAEjC,aAAa,CAAU,OAA6B;QAClD,MAAM,EAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,qBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAa,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAZC;IADC,IAAA,WAAM,GAAE;sCACC,oBAAe;0CAAC;AAG1B;IADC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,6BAAa,CAAC;sCACzB,WAAI;yCAAU;AALtB,QAAQ;IADpB,IAAA,eAAU,GAAE;GACA,QAAQ,CAcpB;AAdY,4BAAQ","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Constant, DI_PARAM_OPTIONS, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {MemoryAdapter} from \"../adapters/MemoryAdapter\";\nimport {Adapter, AdapterConstructorOptions} from \"../domain/Adapter\";\n\nexport interface AdapterInvokeOptions<T = any> extends AdapterConstructorOptions<T> {\n adapter?: Type<Adapter<T>>;\n}\n\n@Injectable()\nexport class Adapters {\n @Inject()\n injector: InjectorService;\n\n @Constant(\"adapters.Adapter\", MemoryAdapter)\n protected adapter: Type<Adapter>;\n\n invokeAdapter<T = any>(options: AdapterInvokeOptions): Adapter<T> {\n const {adapter = this.adapter, ...props} = options;\n const locals = options.locals || new Map();\n locals.set(DI_PARAM_OPTIONS, props);\n\n return this.injector.invoke<Adapter<T>>(adapter, locals);\n }\n}\n"]}
1
+ {"version":3,"file":"Adapters.js","sourceRoot":"","sources":["../../../src/services/Adapters.ts"],"names":[],"mappings":";;;;AAAA,qCAAgC;AAChC,iCAAyF;AACzF,6DAAwD;AAQjD,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAEnB,QAAQ,CAAkB;IAGhB,OAAO,CAAgB;IAEjC,aAAa,CAAU,OAA6B;QAClD,MAAM,EAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,qBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAa,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAbC;IAAC,IAAA,WAAM,GAAE;sCACC,oBAAe;0CAAC;AAE1B;IAAC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,6BAAa,CAAC;sCACzB,WAAI;yCAAU;AALtB,QAAQ;IADpB,IAAA,eAAU,GAAE;GACA,QAAQ,CAcpB;AAdY,4BAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileSyncAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FileSyncAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACvC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAe,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAQ1D,IAAa,eAAe,GAA5B,MAAa,eAAwC,SAAQ,YAAe;IAC1E,YAAkB,OAA0C,EAAmB,aAA4B;QACzG,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SACvB;IACH,CAAC;CACF,CAAA;AArBY,eAAe;IAF3B,UAAU,EAAE;IACZ,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;IAEf,WAAA,IAAI,CAAA;IAA8C,WAAA,aAAa,EAAE,CAAA;;GADnE,eAAe,CAqB3B;SArBY,eAAe","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {Configuration, Injectable, Opts, ProviderScope, Scope} from \"@tsed/di\";\nimport {ensureDirSync} from \"fs-extra\";\nimport low from \"lowdb\";\nimport FileSync from \"lowdb/adapters/FileSync\";\nimport {dirname} from \"path\";\nimport {AdapterConstructorOptions} from \"../domain/Adapter\";\nimport {AdapterModel, LowDbAdapter} from \"./LowDbAdapter\";\n\nexport interface FileSyncAdapterConstructorOptions extends AdapterConstructorOptions {\n readOnly: true;\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class FileSyncAdapter<T extends AdapterModel> extends LowDbAdapter<T> {\n constructor(@Opts options: FileSyncAdapterConstructorOptions, @Configuration() configuration: Configuration) {\n super(options, configuration);\n\n ensureDirSync(dirname(this.dbFilePath));\n\n const file = new FileSync<{collection: T[]}>(this.dbFilePath);\n\n this.db = low(file);\n this.db\n .defaults({\n collectionName: this.collectionName,\n modelName: nameOf(this.model),\n collection: []\n })\n .write();\n\n if (options.readOnly) {\n file.write = () => {};\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FileSyncAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FileSyncAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACvC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAe,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAQnD,IAAM,eAAe,GAArB,MAAM,eAAwC,SAAQ,YAAe;IAC1E,YAAkB,OAA0C,EAAmB,aAA4B;QACzG,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SACvB;IACH,CAAC;CACF,CAAA;AArBY,eAAe;IAF3B,UAAU,EAAE;IACZ,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;IAEf,WAAA,IAAI,CAAA;IAA8C,WAAA,aAAa,EAAE,CAAA;;GADnE,eAAe,CAqB3B;SArBY,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"LowDbAdapter.js","sourceRoot":"","sources":["../../../src/adapters/LowDbAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import {cleanObject} from \"@tsed/core\";\nimport isMatch from \"lodash/isMatch\";\nimport low from \"lowdb\";\nimport {v4 as uuid} from \"uuid\";\nimport {Adapter} from \"../domain/Adapter\";\n\nexport interface AdapterModel {\n _id: string;\n expires_at?: Date;\n\n [key: string]: any;\n}\n\nexport class LowDbAdapter<T extends AdapterModel> extends Adapter<T> {\n protected db: low.LowdbSync<{collection: T[]}>;\n\n get collection() {\n return this.db.get(\"collection\");\n }\n\n protected get dbFilePath() {\n const lowdbDir = this.configuration.get(\"adapters.lowdbDir\", \".db\");\n return `${lowdbDir}/${this.collectionName}.json`;\n }\n\n public async create(payload: Partial<T>, expiresAt?: Date): Promise<T> {\n if (expiresAt) {\n payload.expires_at = expiresAt;\n }\n\n payload._id = uuid();\n\n await this.validate(payload as T);\n\n await this.collection.push(this.serialize(payload) as T).write();\n\n return this.deserialize(payload);\n }\n\n public async upsert(id: string, payload: T, expiresAt?: Date): Promise<T> {\n let item = await this.findById(id);\n\n if (!item) {\n payload._id = id || uuid();\n\n await this.validate(payload as T);\n\n const item = this.serialize(payload);\n item.expires_at = expiresAt;\n\n await this.collection.push(item).write();\n\n return this.deserialize(payload);\n }\n\n return (await this.update(id, payload, expiresAt)) as T;\n }\n\n public async update(id: string, payload: T, expiresAt?: Date): Promise<T | undefined> {\n return this.updateOne({_id: id}, payload, expiresAt);\n }\n\n public async updateOne(predicate: Partial<T & any>, payload: T, expiresAt?: Date): Promise<T | undefined> {\n let index = this.collection.findIndex(cleanObject(predicate)).value();\n\n if (index === -1) {\n return;\n }\n\n let item = this.deserialize(this.collection.get(index).value());\n\n Object.assign(item, payload, {_id: item._id});\n\n await this.validate(item as T);\n\n item.expires_at = expiresAt || item.expires_at;\n\n await this.collection.set(index, item).write();\n\n return this.deserialize(item);\n }\n\n async findOne(predicate: Partial<T & any>): Promise<T | undefined> {\n const item = this.collection.find(cleanObject(predicate)).value();\n\n return this.deserialize(item);\n }\n\n async findById(_id: string): Promise<T | undefined> {\n return this.findOne({_id});\n }\n\n public async findAll(predicate: Partial<T & any> = {}): Promise<T[]> {\n return this.collection\n .filter(cleanObject(predicate))\n .value()\n .map((item) => this.deserialize(item));\n }\n\n public async deleteOne(predicate: Partial<T & any>): Promise<T | undefined> {\n const item = this.collection.find(cleanObject(predicate)).value();\n\n if (item) {\n this.collection.remove(({_id}) => _id === item._id).write();\n\n return this.deserialize(item);\n }\n }\n\n public async deleteById(_id: string): Promise<T | undefined> {\n return this.deleteOne({_id} as any);\n }\n\n public async deleteMany(predicate: Partial<T>): Promise<T[]> {\n let removedItems: T[] = [];\n\n await this.collection\n .remove((item) => {\n if (isMatch(item, cleanObject(predicate))) {\n removedItems.push(this.deserialize(item));\n return true;\n }\n return false;\n })\n .write();\n\n return removedItems;\n }\n}\n"]}
1
+ {"version":3,"file":"LowDbAdapter.js","sourceRoot":"","sources":["../../../src/adapters/LowDbAdapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryAdapter.js","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/E,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAe,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAI1D,IAAa,aAAa,GAA1B,MAAa,aAAsC,SAAQ,YAAe;IACxE,YAAkB,OAAY,EAAmB,aAA4B;QAC3E,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;IACb,CAAC;CACF,CAAA;AAXY,aAAa;IAFzB,UAAU,EAAE;IACZ,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;IAEf,WAAA,IAAI,CAAA;IAAgB,WAAA,aAAa,EAAE,CAAA;;GADrC,aAAa,CAWzB;SAXY,aAAa","sourcesContent":["import {Configuration, Injectable, Opts, ProviderScope, Scope} from \"@tsed/di\";\nimport low from \"lowdb\";\nimport Memory from \"lowdb/adapters/Memory\";\nimport {AdapterModel, LowDbAdapter} from \"./LowDbAdapter\";\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class MemoryAdapter<T extends AdapterModel> extends LowDbAdapter<T> {\n constructor(@Opts options: any, @Configuration() configuration: Configuration) {\n super(options, configuration);\n\n this.db = low(new Memory<{collection: T[]}>(this.dbFilePath));\n this.db\n .defaults({\n collection: []\n })\n .write();\n }\n}\n"]}
1
+ {"version":3,"file":"MemoryAdapter.js","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/E,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAe,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAInD,IAAM,aAAa,GAAnB,MAAM,aAAsC,SAAQ,YAAe;IACxE,YAAkB,OAAY,EAAmB,aAA4B;QAC3E,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9B,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,CAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE;aACJ,QAAQ,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;aACD,KAAK,EAAE,CAAC;IACb,CAAC;CACF,CAAA;AAXY,aAAa;IAFzB,UAAU,EAAE;IACZ,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;IAEf,WAAA,IAAI,CAAA;IAAgB,WAAA,aAAa,EAAE,CAAA;;GADrC,aAAa,CAWzB;SAXY,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../src/decorators/indexed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,OAAO;IACrB,OAAO,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {JsonEntityFn} from \"@tsed/schema\";\n\nexport function Indexed(): PropertyDecorator {\n return JsonEntityFn((entity) => {\n entity.store.set(\"adapter:indexed\", {});\n });\n}\n"]}
1
+ {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../src/decorators/indexed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,OAAO;IACrB,OAAO,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"injectAdapter.js","sourceRoot":"","sources":["../../../src/decorators/injectAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAO,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAuB,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAEpE,SAAS,UAAU,CAAC,IAAW;IAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,OAAO;gBACL,GAAG,OAAO;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC;SACH;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAC7C,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AASD,MAAM,UAAU,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,OAAO,GAAyB,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;YACxC,KAAK;gBACH,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,SAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEnE,OAAO,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {classOf, descriptorOf, isClass, isString, Type} from \"@tsed/core\";\nimport {Inject} from \"@tsed/di\";\nimport {AdapterInvokeOptions, Adapters} from \"../services/Adapters\";\n\nfunction mapOptions(args: any[]): AdapterInvokeOptions {\n return args.reduce((options: AdapterInvokeOptions, item, index) => {\n if (isString(item)) {\n return {\n ...options,\n collectionName: item\n };\n }\n\n if (isClass(item) && classOf(item) !== Object) {\n return {\n ...options,\n model: item\n };\n }\n\n return {...options, ...item};\n }, {});\n}\n\nexport function InjectAdapter(options: AdapterInvokeOptions): PropertyDecorator;\nexport function InjectAdapter(model: Type<any>, options?: Partial<Omit<AdapterInvokeOptions, \"client\">>): PropertyDecorator;\nexport function InjectAdapter(\n collectionName: string,\n model: Type<any>,\n options?: Partial<Omit<AdapterInvokeOptions, \"collectionName\" | \"client\">>\n): PropertyDecorator;\nexport function InjectAdapter(...args: any[]): PropertyDecorator {\n const options: AdapterInvokeOptions = mapOptions(args);\n\n return (target) => {\n Inject(Adapters)(target, \"$adapters\");\n const descriptor = descriptorOf(target, \"$onInit\");\n\n Reflect.defineProperty(target, \"$onInit\", {\n value() {\n this.adapter = (this.$adapters as Adapters).invokeAdapter(options);\n\n return descriptor && descriptor.value && descriptor.value.call(this);\n }\n });\n };\n}\n"]}
1
+ {"version":3,"file":"injectAdapter.js","sourceRoot":"","sources":["../../../src/decorators/injectAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAO,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAuB,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAEpE,SAAS,UAAU,CAAC,IAAW;IAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,OAAO;gBACL,GAAG,OAAO;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC;SACH;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAC7C,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AASD,MAAM,UAAU,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,OAAO,GAAyB,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;YACxC,KAAK;gBACH,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,SAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEnE,OAAO,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../../src/domain/Adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import {AjvService} from \"@tsed/ajv\";\nimport {classOf, isArray, isPlainObject, nameOf, Type} from \"@tsed/core\";\nimport {Configuration, Inject, Opts} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, JsonSerializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {getPropertiesStores, JsonEntityStore} from \"@tsed/schema\";\n\nexport interface AdapterConstructorOptions<T = any> extends Record<string, any> {\n model: Type<T> | Object;\n collectionName?: string;\n useAlias?: string;\n indexes?: {\n [propertyKey: string]: Record<string, any>;\n };\n}\n\nfunction getIndexes(model: any) {\n return [...getPropertiesStores(model).entries()]\n .filter(([, entity]) => entity.store.has(\"adapter:indexed\"))\n .map(([propertyKey, entity]) => {\n return {\n propertyKey: String(propertyKey),\n options: entity.store.get(\"adapter:indexed\")\n };\n });\n}\n\nfunction mapIndexes(indexes: {[p: string]: Record<string, any>} | {propertyKey: string; options: any}[]) {\n return Object.entries(indexes).reduce((indexes: any[], [propertyKey, options]) => {\n return indexes.concat({\n propertyKey,\n options\n });\n }, []);\n}\n\nfunction pluralize(name: string) {\n return name.slice(-1) === \"y\" ? `${name.slice(0, name.length - 1)}ies` : name + \"s\";\n}\n\nexport abstract class Adapter<Model = any> {\n readonly model: Type<Model> | Object;\n readonly collectionName: string;\n readonly indexes: {propertyKey: string; options: any}[];\n readonly useAlias: boolean = false;\n\n @Inject()\n protected ajvService: AjvService;\n\n constructor(@Opts options: AdapterConstructorOptions, @Configuration() protected configuration: Configuration) {\n this.model = options.model;\n this.collectionName = options.collectionName || pluralize(nameOf(options.model));\n\n let indexes = options.indexes || configuration.get(`adapters.${this.collectionName}.indexes`) || getIndexes(this.model);\n\n if (!isArray(indexes)) {\n indexes = mapIndexes(indexes);\n }\n\n this.indexes = indexes;\n this.useAlias = !!options.useAlias;\n }\n\n async validate(value: Model): Promise<void> {\n if (this.getModel()) {\n await this.ajvService.validate(this.serialize(value), {\n useAlias: this.useAlias,\n type: this.model\n });\n }\n }\n\n abstract create(value: Partial<Omit<Model, \"_id\">>, expiresAt?: Date): Promise<Model>;\n\n abstract update(id: string, value: Model, expiresAt?: Date): Promise<Model | undefined>;\n\n abstract updateOne(predicate: Partial<Model>, value: Partial<Model>, expiresAt?: Date): Promise<Model | undefined>;\n\n abstract upsert(id: string, value: Model, expiresAt?: Date): Promise<Model>;\n\n abstract findOne(predicate: Partial<Model>): Promise<Model | undefined>;\n\n abstract findById(id: string): Promise<Model | undefined>;\n\n abstract findAll(predicate?: Partial<Model>): Promise<Model[]>;\n\n abstract deleteOne(predicate: Partial<Model>): Promise<Model | undefined>;\n\n abstract deleteMany(predicate: Partial<Model>): Promise<Model[]>;\n\n abstract deleteById(id: string): Promise<Model | undefined>;\n\n getModel() {\n return (this.model as unknown) !== Object ? this.model : undefined;\n }\n\n protected deserialize(obj: any, opts?: JsonDeserializerOptions) {\n return deserialize(obj, {\n useAlias: this.useAlias,\n ...opts,\n type: this.getModel()\n });\n }\n\n protected serialize(obj: any, opts?: JsonSerializerOptions) {\n return serialize(obj, {\n useAlias: this.useAlias,\n ...opts,\n type: isPlainObject(obj) ? this.getModel() : classOf(obj)\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../../src/domain/Adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptersSettings.js","sourceRoot":"","sources":["../../../src/domain/AdaptersSettings.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Adapter} from \"./Adapter\";\n\nexport interface AdaptersSettings {\n /**\n * Injectable service to manage database connexion\n */\n Adapter?: Type<Adapter>;\n /**\n *\n */\n lowdbDir?: string;\n /**\n * Use the connection name for the RedisAdapter.\n */\n connectionName?: string;\n\n [key: string]: any;\n}\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n adapters: AdaptersSettings;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AdaptersSettings.js","sourceRoot":"","sources":["../../../src/domain/AdaptersSettings.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./adapters/FileSyncAdapter\";\nexport * from \"./adapters/LowDbAdapter\";\nexport * from \"./adapters/MemoryAdapter\";\nexport * from \"./decorators/indexed\";\nexport * from \"./decorators/injectAdapter\";\nexport * from \"./domain/Adapter\";\nexport * from \"./domain/AdaptersSettings\";\nexport * from \"./services/Adapters\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Adapters.js","sourceRoot":"","sources":["../../../src/services/Adapters.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAChC,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAQxD,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAEnB,QAAQ,CAAkB;IAGhB,OAAO,CAAgB;IAEjC,aAAa,CAAU,OAA6B;QAClD,MAAM,EAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAa,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAZC;IADC,MAAM,EAAE;8BACC,eAAe;0CAAC;AAG1B;IADC,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;8BACzB,IAAI;yCAAU;AALtB,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAcpB;SAdY,QAAQ","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Constant, DI_PARAM_OPTIONS, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {MemoryAdapter} from \"../adapters/MemoryAdapter\";\nimport {Adapter, AdapterConstructorOptions} from \"../domain/Adapter\";\n\nexport interface AdapterInvokeOptions<T = any> extends AdapterConstructorOptions<T> {\n adapter?: Type<Adapter<T>>;\n}\n\n@Injectable()\nexport class Adapters {\n @Inject()\n injector: InjectorService;\n\n @Constant(\"adapters.Adapter\", MemoryAdapter)\n protected adapter: Type<Adapter>;\n\n invokeAdapter<T = any>(options: AdapterInvokeOptions): Adapter<T> {\n const {adapter = this.adapter, ...props} = options;\n const locals = options.locals || new Map();\n locals.set(DI_PARAM_OPTIONS, props);\n\n return this.injector.invoke<Adapter<T>>(adapter, locals);\n }\n}\n"]}
1
+ {"version":3,"file":"Adapters.js","sourceRoot":"","sources":["../../../src/services/Adapters.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAChC,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAQjD,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAEnB,QAAQ,CAAkB;IAGhB,OAAO,CAAgB;IAEjC,aAAa,CAAU,OAA6B;QAClD,MAAM,EAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAa,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAbC;IAAC,MAAM,EAAE;8BACC,eAAe;0CAAC;AAE1B;IAAC,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;8BACzB,IAAI;yCAAU;AALtB,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAcpB;SAdY,QAAQ"}