@ddd-ts/store-inmemory 0.0.0-compute-timeout-on-process.5 → 0.0.0-compute-timeout-on-process.7

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.
@@ -1,3 +1,4 @@
1
+ import "./store/in-memory.database.js";
1
2
  import { TransactionPerformer } from "@ddd-ts/core";
2
3
 
3
4
  //#region src/in-memory.transaction.ts
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.transaction.js","names":[],"sources":["../src/in-memory.transaction.ts"],"sourcesContent":["import { TransactionPerformer } from \"@ddd-ts/core\";\nimport {\n InMemoryDatabase,\n InMemoryUnderlyingTransaction,\n} from \"./store/in-memory.database\";\n\nexport class InMemoryTransaction {\n commitListeners: (() => void)[] = [];\n\n constructor(public readonly transaction: InMemoryUnderlyingTransaction) {}\n\n counter = -1;\n\n increment() {\n this.counter++;\n return this.counter;\n }\n\n onCommit(callback: () => void) {\n this.commitListeners.push(callback);\n }\n\n async executeCommitListeners() {\n await Promise.all(this.commitListeners.map((cb) => cb()));\n }\n}\n\nexport class InMemoryTransactionPerformer extends TransactionPerformer<InMemoryTransaction> {\n constructor(db: InMemoryDatabase) {\n super((effect) => db.transactionally((trx) => effect(trx)));\n }\n}\n\nexport class FakeInMemoryTransactionPerformer extends TransactionPerformer<InMemoryTransaction> {\n constructor() {\n super((effect) => effect(new InMemoryTransaction(null as any)));\n }\n}\n"],"mappings":";;;AAMA,IAAa,sBAAb,MAAiC;CAC/B,kBAAkC,EAAE;CAEpC,YAAY,AAAgB,aAA4C;EAA5C;;CAE5B,UAAU;CAEV,YAAY;AACV,OAAK;AACL,SAAO,KAAK;;CAGd,SAAS,UAAsB;AAC7B,OAAK,gBAAgB,KAAK,SAAS;;CAGrC,MAAM,yBAAyB;AAC7B,QAAM,QAAQ,IAAI,KAAK,gBAAgB,KAAK,OAAO,IAAI,CAAC,CAAC;;;AAI7D,IAAa,+BAAb,cAAkD,qBAA0C;CAC1F,YAAY,IAAsB;AAChC,SAAO,WAAW,GAAG,iBAAiB,QAAQ,OAAO,IAAI,CAAC,CAAC;;;AAI/D,IAAa,mCAAb,cAAsD,qBAA0C;CAC9F,cAAc;AACZ,SAAO,WAAW,OAAO,IAAI,oBAAoB,KAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"in-memory.transaction.js","names":[],"sources":["../src/in-memory.transaction.ts"],"sourcesContent":["import { TransactionPerformer } from \"@ddd-ts/core\";\nimport {\n InMemoryDatabase,\n InMemoryUnderlyingTransaction,\n} from \"./store/in-memory.database\";\n\nexport class InMemoryTransaction {\n commitListeners: (() => void)[] = [];\n\n constructor(public readonly transaction: InMemoryUnderlyingTransaction) {}\n\n counter = -1;\n\n increment() {\n this.counter++;\n return this.counter;\n }\n\n onCommit(callback: () => void) {\n this.commitListeners.push(callback);\n }\n\n async executeCommitListeners() {\n await Promise.all(this.commitListeners.map((cb) => cb()));\n }\n}\n\nexport class InMemoryTransactionPerformer extends TransactionPerformer<InMemoryTransaction> {\n constructor(db: InMemoryDatabase) {\n super((effect) => db.transactionally((trx) => effect(trx)));\n }\n}\n\nexport class FakeInMemoryTransactionPerformer extends TransactionPerformer<InMemoryTransaction> {\n constructor() {\n super((effect) => effect(new InMemoryTransaction(null as any)));\n }\n}\n"],"mappings":";;;;AAMA,IAAa,sBAAb,MAAiC;CAC/B,kBAAkC,EAAE;CAEpC,YAAY,AAAgB,aAA4C;EAA5C;;CAE5B,UAAU;CAEV,YAAY;AACV,OAAK;AACL,SAAO,KAAK;;CAGd,SAAS,UAAsB;AAC7B,OAAK,gBAAgB,KAAK,SAAS;;CAGrC,MAAM,yBAAyB;AAC7B,QAAM,QAAQ,IAAI,KAAK,gBAAgB,KAAK,OAAO,IAAI,CAAC,CAAC;;;AAI7D,IAAa,+BAAb,cAAkD,qBAA0C;CAC1F,YAAY,IAAsB;AAChC,SAAO,WAAW,GAAG,iBAAiB,QAAQ,OAAO,IAAI,CAAC,CAAC;;;AAI/D,IAAa,mCAAb,cAAsD,qBAA0C;CAC9F,cAAc;AACZ,SAAO,WAAW,OAAO,IAAI,oBAAoB,KAAY,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { FakeInMemoryTransactionPerformer, InMemoryTransaction, InMemoryTransactionPerformer } from "./in-memory.transaction.js";
2
1
  import { CannotReadAfterWrites, InMemoryDatabase, InMemoryUnderlyingTransaction, TransactionCollidedTooManyTimes } from "./store/in-memory.database.js";
2
+ import { FakeInMemoryTransactionPerformer, InMemoryTransaction, InMemoryTransactionPerformer } from "./in-memory.transaction.js";
3
3
  import { InMemoryStore } from "./store/in-memory.store.js";
4
4
 
5
5
  export { CannotReadAfterWrites, FakeInMemoryTransactionPerformer, InMemoryDatabase, InMemoryStore, InMemoryTransaction, InMemoryTransactionPerformer, InMemoryUnderlyingTransaction, TransactionCollidedTooManyTimes };
@@ -1,5 +1,5 @@
1
- import { InMemoryTransaction } from "../in-memory.transaction.js";
2
1
  import { Storage } from "./in-memory.storage.js";
2
+ import { InMemoryTransaction } from "../in-memory.transaction.js";
3
3
  import "../index.js";
4
4
  import { ConcurrencyError } from "@ddd-ts/core";
5
5
 
@@ -1,3 +1,7 @@
1
+ import "./in-memory.database.js";
2
+ import "../in-memory.transaction.js";
3
+ import { ISerializer, Store } from "@ddd-ts/core";
4
+
1
5
  //#region src/store/in-memory.store.ts
2
6
  /**
3
7
  * This in memory store is a copy store. It stores a copy of the actual model.
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.store.js","names":[],"sources":["../../src/store/in-memory.store.ts"],"sourcesContent":["import { ISerializer, Store, type IIdentifiable } from \"@ddd-ts/core\";\nimport { InMemoryDatabase } from \"./in-memory.database\";\nimport { InMemoryTransaction } from \"../in-memory.transaction\";\n/**\n * This in memory store is a copy store. It stores a copy of the actual model.\n * It is the recommended inmemory store to use, as it reflects more closely the behaviour of a real store.\n */\nexport class InMemoryStore<M extends IIdentifiable> implements Store<M> {\n constructor(\n public readonly collection: string,\n public readonly database: InMemoryDatabase,\n public readonly serializer: ISerializer<M>,\n public readonly $name?: string,\n ) {}\n\n async filter(\n predicate: (model: M) => boolean,\n trx?: InMemoryTransaction,\n ): Promise<M[]> {\n const filtered = await Promise.all(\n this.database.loadAll(this.collection).map(async (e) => {\n const deserialized = await this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...e.data.data,\n });\n if (!predicate(deserialized)) {\n return undefined;\n }\n trx?.transaction.markRead(this.collection, e.id, e.data.savedAt);\n return deserialized;\n }),\n );\n return filtered.filter((e): e is NonNullable<typeof e> => Boolean(e));\n }\n\n clear() {\n this.database.clear(this.collection);\n }\n\n async create(model: M, trx?: InMemoryTransaction): Promise<void> {\n const serialized = await this.serializer.serialize(model);\n await this.database.create(\n this.collection,\n model.id.serialize(),\n { ...(this.$name ? { $name: this.$name } : {}), ...serialized },\n trx?.transaction,\n );\n }\n\n async save(model: M, trx?: InMemoryTransaction): Promise<void> {\n const serialized = await this.serializer.serialize(model);\n await this.database.save(\n this.collection,\n model.id.serialize(),\n { ...(this.$name ? { $name: this.$name } : {}), ...serialized },\n trx?.transaction,\n );\n }\n\n async saveAll(models: M[], trx?: InMemoryTransaction): Promise<void> {\n await Promise.all(models.map((m) => this.save(m, trx)));\n }\n\n async load(id: M[\"id\"], trx?: InMemoryTransaction): Promise<M | undefined> {\n const serialized = await this.database.load(\n this.collection,\n id.serialize(),\n trx?.transaction,\n );\n\n if (!serialized) {\n return undefined;\n }\n\n return this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...serialized,\n });\n }\n\n loadAll(trx?: InMemoryTransaction): Promise<M[]> {\n const serialized = this.database.loadAll(this.collection);\n\n return Promise.all(\n serialized.map(async (s) => {\n trx?.transaction.markRead(this.collection, s.id, s.data.savedAt);\n return this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...s.data.data,\n });\n }),\n );\n }\n\n async loadMany(ids: M[\"id\"][], trx?: InMemoryTransaction): Promise<M[]> {\n const result = await Promise.all(ids.map((id) => this.load(id, trx)));\n return result.filter((m) => m !== undefined) as M[];\n }\n\n async delete(id: M[\"id\"], trx?: InMemoryTransaction): Promise<void> {\n this.database.delete(this.collection, id.serialize(), trx?.transaction);\n }\n\n async countAll() {\n return this.database.countAll(this.collection);\n }\n\n async *streamAll(): AsyncIterable<M> {\n for (const item of await this.filter(() => true)) {\n yield item;\n }\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,gBAAb,MAAwE;CACtE,YACE,AAAgB,YAChB,AAAgB,UAChB,AAAgB,YAChB,AAAgB,OAChB;EAJgB;EACA;EACA;EACA;;CAGlB,MAAM,OACJ,WACA,KACc;AAcd,UAbiB,MAAM,QAAQ,IAC7B,KAAK,SAAS,QAAQ,KAAK,WAAW,CAAC,IAAI,OAAO,MAAM;GACtD,MAAM,eAAe,MAAM,KAAK,WAAW,YAAY;IACrD,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;IAC3C,GAAG,EAAE,KAAK;IACX,CAAC;AACF,OAAI,CAAC,UAAU,aAAa,CAC1B;AAEF,QAAK,YAAY,SAAS,KAAK,YAAY,EAAE,IAAI,EAAE,KAAK,QAAQ;AAChE,UAAO;IACP,CACH,EACe,QAAQ,MAAkC,QAAQ,EAAE,CAAC;;CAGvE,QAAQ;AACN,OAAK,SAAS,MAAM,KAAK,WAAW;;CAGtC,MAAM,OAAO,OAAU,KAA0C;EAC/D,MAAM,aAAa,MAAM,KAAK,WAAW,UAAU,MAAM;AACzD,QAAM,KAAK,SAAS,OAClB,KAAK,YACL,MAAM,GAAG,WAAW,EACpB;GAAE,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAAG,GAAG;GAAY,EAC/D,KAAK,YACN;;CAGH,MAAM,KAAK,OAAU,KAA0C;EAC7D,MAAM,aAAa,MAAM,KAAK,WAAW,UAAU,MAAM;AACzD,QAAM,KAAK,SAAS,KAClB,KAAK,YACL,MAAM,GAAG,WAAW,EACpB;GAAE,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAAG,GAAG;GAAY,EAC/D,KAAK,YACN;;CAGH,MAAM,QAAQ,QAAa,KAA0C;AACnE,QAAM,QAAQ,IAAI,OAAO,KAAK,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;;CAGzD,MAAM,KAAK,IAAa,KAAmD;EACzE,MAAM,aAAa,MAAM,KAAK,SAAS,KACrC,KAAK,YACL,GAAG,WAAW,EACd,KAAK,YACN;AAED,MAAI,CAAC,WACH;AAGF,SAAO,KAAK,WAAW,YAAY;GACjC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAC3C,GAAG;GACJ,CAAC;;CAGJ,QAAQ,KAAyC;EAC/C,MAAM,aAAa,KAAK,SAAS,QAAQ,KAAK,WAAW;AAEzD,SAAO,QAAQ,IACb,WAAW,IAAI,OAAO,MAAM;AAC1B,QAAK,YAAY,SAAS,KAAK,YAAY,EAAE,IAAI,EAAE,KAAK,QAAQ;AAChE,UAAO,KAAK,WAAW,YAAY;IACjC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;IAC3C,GAAG,EAAE,KAAK;IACX,CAAC;IACF,CACH;;CAGH,MAAM,SAAS,KAAgB,KAAyC;AAEtE,UADe,MAAM,QAAQ,IAAI,IAAI,KAAK,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,EACvD,QAAQ,MAAM,MAAM,OAAU;;CAG9C,MAAM,OAAO,IAAa,KAA0C;AAClE,OAAK,SAAS,OAAO,KAAK,YAAY,GAAG,WAAW,EAAE,KAAK,YAAY;;CAGzE,MAAM,WAAW;AACf,SAAO,KAAK,SAAS,SAAS,KAAK,WAAW;;CAGhD,OAAO,YAA8B;AACnC,OAAK,MAAM,QAAQ,MAAM,KAAK,aAAa,KAAK,CAC9C,OAAM"}
1
+ {"version":3,"file":"in-memory.store.js","names":[],"sources":["../../src/store/in-memory.store.ts"],"sourcesContent":["import { ISerializer, Store, type IIdentifiable } from \"@ddd-ts/core\";\nimport { InMemoryDatabase } from \"./in-memory.database\";\nimport { InMemoryTransaction } from \"../in-memory.transaction\";\n/**\n * This in memory store is a copy store. It stores a copy of the actual model.\n * It is the recommended inmemory store to use, as it reflects more closely the behaviour of a real store.\n */\nexport class InMemoryStore<M extends IIdentifiable> implements Store<M> {\n constructor(\n public readonly collection: string,\n public readonly database: InMemoryDatabase,\n public readonly serializer: ISerializer<M>,\n public readonly $name?: string,\n ) {}\n\n async filter(\n predicate: (model: M) => boolean,\n trx?: InMemoryTransaction,\n ): Promise<M[]> {\n const filtered = await Promise.all(\n this.database.loadAll(this.collection).map(async (e) => {\n const deserialized = await this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...e.data.data,\n });\n if (!predicate(deserialized)) {\n return undefined;\n }\n trx?.transaction.markRead(this.collection, e.id, e.data.savedAt);\n return deserialized;\n }),\n );\n return filtered.filter((e): e is NonNullable<typeof e> => Boolean(e));\n }\n\n clear() {\n this.database.clear(this.collection);\n }\n\n async create(model: M, trx?: InMemoryTransaction): Promise<void> {\n const serialized = await this.serializer.serialize(model);\n await this.database.create(\n this.collection,\n model.id.serialize(),\n { ...(this.$name ? { $name: this.$name } : {}), ...serialized },\n trx?.transaction,\n );\n }\n\n async save(model: M, trx?: InMemoryTransaction): Promise<void> {\n const serialized = await this.serializer.serialize(model);\n await this.database.save(\n this.collection,\n model.id.serialize(),\n { ...(this.$name ? { $name: this.$name } : {}), ...serialized },\n trx?.transaction,\n );\n }\n\n async saveAll(models: M[], trx?: InMemoryTransaction): Promise<void> {\n await Promise.all(models.map((m) => this.save(m, trx)));\n }\n\n async load(id: M[\"id\"], trx?: InMemoryTransaction): Promise<M | undefined> {\n const serialized = await this.database.load(\n this.collection,\n id.serialize(),\n trx?.transaction,\n );\n\n if (!serialized) {\n return undefined;\n }\n\n return this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...serialized,\n });\n }\n\n loadAll(trx?: InMemoryTransaction): Promise<M[]> {\n const serialized = this.database.loadAll(this.collection);\n\n return Promise.all(\n serialized.map(async (s) => {\n trx?.transaction.markRead(this.collection, s.id, s.data.savedAt);\n return this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n ...s.data.data,\n });\n }),\n );\n }\n\n async loadMany(ids: M[\"id\"][], trx?: InMemoryTransaction): Promise<M[]> {\n const result = await Promise.all(ids.map((id) => this.load(id, trx)));\n return result.filter((m) => m !== undefined) as M[];\n }\n\n async delete(id: M[\"id\"], trx?: InMemoryTransaction): Promise<void> {\n this.database.delete(this.collection, id.serialize(), trx?.transaction);\n }\n\n async countAll() {\n return this.database.countAll(this.collection);\n }\n\n async *streamAll(): AsyncIterable<M> {\n for (const item of await this.filter(() => true)) {\n yield item;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAOA,IAAa,gBAAb,MAAwE;CACtE,YACE,AAAgB,YAChB,AAAgB,UAChB,AAAgB,YAChB,AAAgB,OAChB;EAJgB;EACA;EACA;EACA;;CAGlB,MAAM,OACJ,WACA,KACc;AAcd,UAbiB,MAAM,QAAQ,IAC7B,KAAK,SAAS,QAAQ,KAAK,WAAW,CAAC,IAAI,OAAO,MAAM;GACtD,MAAM,eAAe,MAAM,KAAK,WAAW,YAAY;IACrD,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;IAC3C,GAAG,EAAE,KAAK;IACX,CAAC;AACF,OAAI,CAAC,UAAU,aAAa,CAC1B;AAEF,QAAK,YAAY,SAAS,KAAK,YAAY,EAAE,IAAI,EAAE,KAAK,QAAQ;AAChE,UAAO;IACP,CACH,EACe,QAAQ,MAAkC,QAAQ,EAAE,CAAC;;CAGvE,QAAQ;AACN,OAAK,SAAS,MAAM,KAAK,WAAW;;CAGtC,MAAM,OAAO,OAAU,KAA0C;EAC/D,MAAM,aAAa,MAAM,KAAK,WAAW,UAAU,MAAM;AACzD,QAAM,KAAK,SAAS,OAClB,KAAK,YACL,MAAM,GAAG,WAAW,EACpB;GAAE,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAAG,GAAG;GAAY,EAC/D,KAAK,YACN;;CAGH,MAAM,KAAK,OAAU,KAA0C;EAC7D,MAAM,aAAa,MAAM,KAAK,WAAW,UAAU,MAAM;AACzD,QAAM,KAAK,SAAS,KAClB,KAAK,YACL,MAAM,GAAG,WAAW,EACpB;GAAE,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAAG,GAAG;GAAY,EAC/D,KAAK,YACN;;CAGH,MAAM,QAAQ,QAAa,KAA0C;AACnE,QAAM,QAAQ,IAAI,OAAO,KAAK,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;;CAGzD,MAAM,KAAK,IAAa,KAAmD;EACzE,MAAM,aAAa,MAAM,KAAK,SAAS,KACrC,KAAK,YACL,GAAG,WAAW,EACd,KAAK,YACN;AAED,MAAI,CAAC,WACH;AAGF,SAAO,KAAK,WAAW,YAAY;GACjC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;GAC3C,GAAG;GACJ,CAAC;;CAGJ,QAAQ,KAAyC;EAC/C,MAAM,aAAa,KAAK,SAAS,QAAQ,KAAK,WAAW;AAEzD,SAAO,QAAQ,IACb,WAAW,IAAI,OAAO,MAAM;AAC1B,QAAK,YAAY,SAAS,KAAK,YAAY,EAAE,IAAI,EAAE,KAAK,QAAQ;AAChE,UAAO,KAAK,WAAW,YAAY;IACjC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;IAC3C,GAAG,EAAE,KAAK;IACX,CAAC;IACF,CACH;;CAGH,MAAM,SAAS,KAAgB,KAAyC;AAEtE,UADe,MAAM,QAAQ,IAAI,IAAI,KAAK,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,EACvD,QAAQ,MAAM,MAAM,OAAU;;CAG9C,MAAM,OAAO,IAAa,KAA0C;AAClE,OAAK,SAAS,OAAO,KAAK,YAAY,GAAG,WAAW,EAAE,KAAK,YAAY;;CAGzE,MAAM,WAAW;AACf,SAAO,KAAK,SAAS,SAAS,KAAK,WAAW;;CAGhD,OAAO,YAA8B;AACnC,OAAK,MAAM,QAAQ,MAAM,KAAK,aAAa,KAAK,CAC9C,OAAM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-ts/store-inmemory",
3
- "version": "0.0.0-compute-timeout-on-process.5",
3
+ "version": "0.0.0-compute-timeout-on-process.7",
4
4
  "types": "dist/index.d.ts",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,11 +10,11 @@
10
10
  "dist"
11
11
  ],
12
12
  "dependencies": {
13
- "@ddd-ts/core": "0.0.0-compute-timeout-on-process.5"
13
+ "@ddd-ts/core": "0.0.0-compute-timeout-on-process.7"
14
14
  },
15
15
  "devDependencies": {
16
- "@ddd-ts/tools": "0.0.0-compute-timeout-on-process.5",
17
- "@ddd-ts/types": "0.0.0-compute-timeout-on-process.5",
16
+ "@ddd-ts/tools": "0.0.0-compute-timeout-on-process.7",
17
+ "@ddd-ts/types": "0.0.0-compute-timeout-on-process.7",
18
18
  "@types/jest": "^29.5.1",
19
19
  "@types/node": "^20.12.4"
20
20
  },