@daiso-tech/core 0.46.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cache/contracts/cache-adapter.contract.d.ts +1 -1
  2. package/dist/cache/contracts/cache.events.d.ts +1 -1
  3. package/dist/cache/contracts/database-cache-adapter.contract.d.ts +1 -1
  4. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +11 -2
  5. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +8 -8
  6. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
  7. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +1 -1
  8. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  9. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +1 -1
  10. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  11. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
  12. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  13. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +1 -1
  14. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  15. package/dist/cache/implementations/derivables/cache/database-cache-adapter.d.ts +1 -1
  16. package/dist/cache/implementations/derivables/cache/database-cache-adapter.js.map +1 -1
  17. package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.js.map +1 -1
  18. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +8 -4
  19. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js.map +1 -1
  20. package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.d.ts +11 -0
  21. package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js +13 -3
  22. package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js.map +1 -1
  23. package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.d.ts +6 -0
  24. package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js +14 -2
  25. package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js.map +1 -1
  26. package/dist/circuit-breaker/implementations/policies/sampling-breaker/sampling-breaker.d.ts +1 -1
  27. package/dist/collection/contracts/async-collection.contract.d.ts +1 -1
  28. package/dist/collection/contracts/collection.contract.d.ts +2 -2
  29. package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.js.map +1 -1
  30. package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.js.map +1 -1
  31. package/dist/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.js.map +1 -1
  32. package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
  33. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +1 -1
  34. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  35. package/dist/collection/implementations/iterable-collection/_shared/chunk-iterable.js.map +1 -1
  36. package/dist/collection/implementations/iterable-collection/_shared/chunk-while-iterable.js.map +1 -1
  37. package/dist/collection/implementations/iterable-collection/_shared/partion-iterable.js.map +1 -1
  38. package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
  39. package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +1 -1
  40. package/dist/collection/implementations/list-collection/list-collection.d.ts +1 -1
  41. package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
  42. package/dist/hooks/async-hooks.d.ts +9 -11
  43. package/dist/hooks/hooks.d.ts +5 -5
  44. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +11 -0
  45. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +18 -14
  46. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  47. package/dist/namespace/implementations/namespace.d.ts +1 -1
  48. package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.d.ts +11 -0
  49. package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js +13 -3
  50. package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js.map +1 -1
  51. package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.d.ts +6 -0
  52. package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js +14 -2
  53. package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js.map +1 -1
  54. package/dist/resilience/middlewares/dynamic/dynamic.middleware.d.ts +1 -1
  55. package/dist/resilience/middlewares/fallback/fallback.middleware.d.ts +1 -1
  56. package/dist/resilience/middlewares/fallback/fallback.types.d.ts +4 -4
  57. package/dist/resilience/middlewares/observe/observe.middleware.d.ts +1 -1
  58. package/dist/resilience/middlewares/observe/observe.types.d.ts +7 -7
  59. package/dist/resilience/middlewares/retry/retry.middleware.d.ts +1 -1
  60. package/dist/resilience/middlewares/retry/retry.middleware.js.map +1 -1
  61. package/dist/resilience/middlewares/retry/retry.types.d.ts +6 -6
  62. package/dist/resilience/middlewares/timeout/timeout.middleware.d.ts +1 -1
  63. package/dist/resilience/middlewares/timeout/timeout.type.d.ts +4 -4
  64. package/dist/resilience/resilience.errors.d.ts +1 -1
  65. package/dist/resilience/resilience.errors.js.map +1 -1
  66. package/dist/semaphore/contracts/database-semaphore-adapter.contract.d.ts +2 -2
  67. package/dist/semaphore/contracts/semaphore-state.contract.d.ts +3 -3
  68. package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.d.ts +12 -1
  69. package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js +18 -14
  70. package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js.map +1 -1
  71. package/dist/semaphore/implementations/test-utilities/database-semaphore-adapter.test-suite.js.map +1 -1
  72. package/dist/serde/contracts/flexible-serde.contract.d.ts +1 -1
  73. package/dist/shared-lock/contracts/database-shared-lock-adapter.contract.d.ts +2 -2
  74. package/dist/shared-lock/contracts/shared-lock-state.contract.d.ts +3 -3
  75. package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.d.ts +11 -0
  76. package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js +16 -6
  77. package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js.map +1 -1
  78. package/dist/shared-lock/implementations/test-utilities/database-shared-lock-adapter.test-suite.js.map +1 -1
  79. package/dist/task/implementations/task.d.ts +9 -9
  80. package/dist/task/implementations/task.js.map +1 -1
  81. package/dist/utilities/contracts/sqlite-database.contract.d.ts +1 -1
  82. package/dist/utilities/functions/invokable.d.ts +9 -9
  83. package/dist/utilities/functions/invokable.js.map +1 -1
  84. package/dist/utilities/functions/resolve-one-or-more.d.ts +1 -1
  85. package/dist/utilities/types/any-class.type.d.ts +1 -1
  86. package/dist/utilities/types/none-func.type.d.ts +1 -1
  87. package/package.json +1 -1
@@ -42,6 +42,15 @@ export type KyselyRateLimiterStorageAdapterSettings = {
42
42
  * @default true
43
43
  */
44
44
  shouldRemoveExpiredKeys?: boolean;
45
+ /**
46
+ * @default
47
+ * ```ts
48
+ * import { Transaction } from "kysely"
49
+ *
50
+ * !(settings.kysely instanceof Transaction)
51
+ * ```
52
+ */
53
+ enableTransactions?: boolean;
45
54
  };
46
55
  /**
47
56
  * IMPORT_PATH: `"@daiso-tech/core/rate-limiter/kysely-rate-limiter-storage-adapter"`
@@ -53,6 +62,7 @@ export declare class KyselyRateLimiterStorageAdapter<TType> implements IRateLimi
53
62
  private readonly expiredKeysRemovalInterval;
54
63
  private readonly shouldRemoveExpiredKeys;
55
64
  private intervalId;
65
+ private readonly enableTransactions;
56
66
  /**
57
67
  * @example
58
68
  * ```ts
@@ -76,6 +86,7 @@ export declare class KyselyRateLimiterStorageAdapter<TType> implements IRateLimi
76
86
  * ```
77
87
  */
78
88
  constructor(settings: KyselyRateLimiterStorageAdapterSettings);
89
+ private _transaction;
79
90
  /**
80
91
  * Removes all related rate limiter tables and their rows.
81
92
  * Note all rate limiter data will be removed.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module RateLimiter
3
3
  */
4
- import { MysqlAdapter } from "kysely";
4
+ import { MysqlAdapter, Transaction } from "kysely";
5
5
  import {} from "../../../../rate-limiter/contracts/_module.js";
6
6
  import {} from "../../../../serde/contracts/_module.js";
7
7
  import {} from "../../../../time-span/contracts/_module.js";
@@ -73,6 +73,7 @@ export class KyselyRateLimiterStorageAdapter {
73
73
  expiredKeysRemovalInterval;
74
74
  shouldRemoveExpiredKeys;
75
75
  intervalId = null;
76
+ enableTransactions;
76
77
  /**
77
78
  * @example
78
79
  * ```ts
@@ -96,11 +97,20 @@ export class KyselyRateLimiterStorageAdapter {
96
97
  * ```
97
98
  */
98
99
  constructor(settings) {
99
- const { kysely, serde, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, } = settings;
100
+ const { kysely, serde, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, enableTransactions = !(settings.kysely instanceof Transaction), } = settings;
100
101
  this.expiredKeysRemovalInterval = TimeSpan.fromTimeSpan(expiredKeysRemovalInterval);
101
102
  this.shouldRemoveExpiredKeys = shouldRemoveExpiredKeys;
102
103
  this.kysely = kysely;
103
104
  this.serde = serde;
105
+ this.enableTransactions = enableTransactions;
106
+ }
107
+ _transaction(trxFn) {
108
+ if (this.enableTransactions) {
109
+ return this.kysely.transaction().execute(async (trx) => {
110
+ return await trxFn(trx);
111
+ });
112
+ }
113
+ return trxFn(this.kysely);
104
114
  }
105
115
  /**
106
116
  * Removes all related rate limiter tables and their rows.
@@ -169,7 +179,7 @@ export class KyselyRateLimiterStorageAdapter {
169
179
  .execute();
170
180
  }
171
181
  async transaction(fn) {
172
- return await this.kysely.transaction().execute(async (trx) => {
182
+ return await this._transaction(async (trx) => {
173
183
  return await fn(new KyselyRateLimiterStorageAdapterTransaction(trx, this.serde));
174
184
  });
175
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kysely-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kysely-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@ export type MongodbRateLimiterStorageAdapterSettings = {
18
18
  collectionName?: string;
19
19
  collectionSettings?: CollectionOptions;
20
20
  serde: ISerde<string>;
21
+ /**
22
+ * @default true
23
+ */
24
+ enableTransactions?: boolean;
21
25
  };
22
26
  /**
23
27
  * IMPORT_PATH: `"@daiso-tech/core/rate-limiter/mongodb-rate-limiter-storage-adapter"`
@@ -37,6 +41,7 @@ export declare class MongodbRateLimiterStorageAdapter<TType> implements IRateLim
37
41
  private readonly client;
38
42
  private readonly collection;
39
43
  private readonly serde;
44
+ private readonly enableTransactions;
40
45
  /**
41
46
  * @example
42
47
  * ```ts
@@ -69,6 +74,7 @@ export declare class MongodbRateLimiterStorageAdapter<TType> implements IRateLim
69
74
  */
70
75
  init(): Promise<void>;
71
76
  private upsert;
77
+ private _transaction;
72
78
  transaction<TValue>(fn: InvokableFn<[
73
79
  transaction: IRateLimiterStorageAdapterTransaction<TType>
74
80
  ], Promise<TValue>>): Promise<TValue>;
@@ -13,6 +13,7 @@ export class MongodbRateLimiterStorageAdapter {
13
13
  client;
14
14
  collection;
15
15
  serde;
16
+ enableTransactions;
16
17
  /**
17
18
  * @example
18
19
  * ```ts
@@ -34,10 +35,11 @@ export class MongodbRateLimiterStorageAdapter {
34
35
  * ```
35
36
  */
36
37
  constructor(settings) {
37
- const { client, collectionName = "rateLimiter", collectionSettings, database, serde, } = settings;
38
+ const { client, collectionName = "rateLimiter", collectionSettings, database, serde, enableTransactions = true, } = settings;
38
39
  this.client = client;
39
40
  this.collection = database.collection(collectionName, collectionSettings);
40
41
  this.serde = serde;
42
+ this.enableTransactions = enableTransactions;
41
43
  }
42
44
  /**
43
45
  * Removes the collection where the rate limiter keys are stored and all it's related indexes.
@@ -97,8 +99,18 @@ export class MongodbRateLimiterStorageAdapter {
97
99
  upsert: true,
98
100
  });
99
101
  }
102
+ async _transaction(trxFn) {
103
+ if (this.enableTransactions) {
104
+ return await this.client
105
+ .startSession()
106
+ .withTransaction(async () => {
107
+ return await trxFn();
108
+ });
109
+ }
110
+ return trxFn();
111
+ }
100
112
  async transaction(fn) {
101
- return await this.client.startSession().withTransaction(async () => {
113
+ return await this._transaction(async () => {
102
114
  return await fn({
103
115
  upsert: (key, state, exiration) => this.upsert(key, state, exiration),
104
116
  find: (key) => this.find(key),
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongodb-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ import { type Invokable } from "../../../utilities/_module.js";
28
28
  * ).invoke(1, 0);
29
29
  * ```
30
30
  */
31
- export declare function dynamic<TParameters extends unknown[], TReturn, TContext extends HookContext>(dynamic: NoInfer<Invokable<[
31
+ export declare function dynamic<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(dynamic: NoInfer<Invokable<[
32
32
  arguments_: TParameters,
33
33
  context: TContext
34
34
  ], AsyncMiddleware<TParameters, TReturn, TContext>>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
@@ -29,4 +29,4 @@ import { type FallbackSettings } from "../../../resilience/middlewares/fallback/
29
29
  * console.log(await fetchData.invoke("URL_ENDPOINT"));
30
30
  * ```
31
31
  */
32
- export declare function fallback<TParameters extends unknown[], TReturn, TContext extends HookContext>(settings: NoInfer<FallbackSettings<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
32
+ export declare function fallback<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings: NoInfer<FallbackSettings<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
@@ -8,7 +8,7 @@ import { type Invokable, type AsyncLazyable, type ErrorPolicySettings } from "..
8
8
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
9
9
  * @group Middlewares
10
10
  */
11
- export type OnFallbackData<TParameters extends unknown[] = unknown[], TFallbackValue = unknown, TContext extends HookContext = HookContext> = {
11
+ export type OnFallbackData<TParameters extends Array<unknown> = Array<unknown>, TFallbackValue = unknown, TContext extends HookContext = HookContext> = {
12
12
  error: unknown;
13
13
  fallbackValue: TFallbackValue;
14
14
  args: TParameters;
@@ -19,13 +19,13 @@ export type OnFallbackData<TParameters extends unknown[] = unknown[], TFallbackV
19
19
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
20
20
  * @group Middlewares
21
21
  */
22
- export type OnFallback<TParameters extends unknown[] = unknown[], TFallbackValue = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnFallbackData<TParameters, TFallbackValue, TContext>]>;
22
+ export type OnFallback<TParameters extends Array<unknown> = Array<unknown>, TFallbackValue = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnFallbackData<TParameters, TFallbackValue, TContext>]>;
23
23
  /**
24
24
  *
25
25
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
26
26
  * @group Middlewares
27
27
  */
28
- export type FallbackCallbacks<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = {
28
+ export type FallbackCallbacks<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
29
29
  /**
30
30
  * Callback {@link Invokable | `Invokable`} that will be called before fallback value is returned.
31
31
  */
@@ -36,6 +36,6 @@ export type FallbackCallbacks<TParameters extends unknown[] = unknown[], TReturn
36
36
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
37
37
  * @group Middlewares
38
38
  */
39
- export type FallbackSettings<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = FallbackCallbacks<TParameters, TReturn, TContext> & ErrorPolicySettings & {
39
+ export type FallbackSettings<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = FallbackCallbacks<TParameters, TReturn, TContext> & ErrorPolicySettings & {
40
40
  fallbackValue: AsyncLazyable<TReturn>;
41
41
  };
@@ -43,4 +43,4 @@ import { type ObserveCallbacks } from "../../../resilience/middlewares/observe/o
43
43
  * // Will log the execution time and arguments
44
44
  * ```
45
45
  */
46
- export declare function observe<TParameters extends unknown[], TReturn, TContext extends HookContext>(settings: NoInfer<ObserveCallbacks<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
46
+ export declare function observe<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings: NoInfer<ObserveCallbacks<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
@@ -9,7 +9,7 @@ import { type Invokable } from "../../../utilities/_module.js";
9
9
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
10
10
  * @group Middlewares
11
11
  */
12
- export type OnObserveStartData<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
12
+ export type OnObserveStartData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
13
13
  args: TParameters;
14
14
  context: TContext;
15
15
  };
@@ -18,13 +18,13 @@ export type OnObserveStartData<TParameters extends unknown[] = unknown[], TConte
18
18
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
19
19
  * @group Middlewares
20
20
  */
21
- export type OnObserveStart<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = Invokable<[data: OnObserveStartData<TParameters, TContext>]>;
21
+ export type OnObserveStart<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveStartData<TParameters, TContext>]>;
22
22
  /**
23
23
  *
24
24
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
25
25
  * @group Middlewares
26
26
  */
27
- export type OnObserveSuccessData<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = {
27
+ export type OnObserveSuccessData<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
28
28
  returnValue: TReturn;
29
29
  args: TParameters;
30
30
  context: TContext;
@@ -34,13 +34,13 @@ export type OnObserveSuccessData<TParameters extends unknown[] = unknown[], TRet
34
34
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
35
35
  * @group Middlewares
36
36
  */
37
- export type OnObserveSuccess<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveSuccessData<TParameters, TReturn, TContext>]>;
37
+ export type OnObserveSuccess<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveSuccessData<TParameters, TReturn, TContext>]>;
38
38
  /**
39
39
  *
40
40
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
41
41
  * @group Middlewares
42
42
  */
43
- export type OnObserveErrorData<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
43
+ export type OnObserveErrorData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
44
44
  error: unknown;
45
45
  args: TParameters;
46
46
  context: TContext;
@@ -59,7 +59,7 @@ export type OnObserveFinallyData<TContext extends HookContext = HookContext> = {
59
59
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
60
60
  * @group Middlewares
61
61
  */
62
- export type OnObserveError<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = Invokable<[data: OnObserveErrorData<TParameters, TContext>]>;
62
+ export type OnObserveError<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveErrorData<TParameters, TContext>]>;
63
63
  /**
64
64
  *
65
65
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
@@ -71,7 +71,7 @@ export type OnObserveFinally<TContext extends HookContext = HookContext> = Invok
71
71
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
72
72
  * @group Middlewares
73
73
  */
74
- export type ObserveCallbacks<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = {
74
+ export type ObserveCallbacks<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
75
75
  /**
76
76
  * Callback {@link Invokable | `Invokable`} that will be called when before the underlying {@link Invokable | `Invokable`} is called.
77
77
  */
@@ -38,4 +38,4 @@ import { type RetrySettings } from "../../../resilience/middlewares/retry/retry.
38
38
  * .invoke("URL");
39
39
  * ```
40
40
  */
41
- export declare function retry<TParameters extends unknown[], TReturn, TContext extends HookContext>(settings?: NoInfer<RetrySettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
41
+ export declare function retry<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings?: NoInfer<RetrySettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"retry.middleware.js","sourceRoot":"","sources":["../../../../src/resilience/middlewares/retry/retry.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAA4C,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAsB,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AACzD,OAAO,EACH,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,eAAe,EACf,sBAAsB,EACtB,sBAAsB,GAEzB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,KAAK,CAKjB,WAA0D,EAAE;IAE5D,MAAM,EACF,WAAW,GAAG,CAAC,EACf,aAAa,GAAG,kBAAkB,EAAE,EACpC,WAAW,EACX,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,EACvB,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,GAChC,GAAG,QAAQ,CAAC;IACb,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7C,IAAI,MAAM,GAAoB,UAAU,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACD,aAAa,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAElC,gDAAgD;gBAChD,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC9C,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM;gBACV,CAAC;gBAED,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE9D,aAAa,CAAC,YAAY,EAAE;oBACxB,KAAK,EAAE,KAAK;oBACZ,QAAQ;oBACR,OAAO;oBACP,IAAI;oBACJ,OAAO;iBACV,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAEnC,wCAAwC;YAC5C,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM;gBACV,CAAC;gBAED,IAAI,MAAM,sBAAsB,CAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;oBACxD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,CAAC;gBAChB,CAAC;gBAED,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE9D,aAAa,CAAC,YAAY,EAAE;oBACxB,KAAK,EAAE,KAAK;oBACZ,QAAQ;oBACR,OAAO;oBACP,IAAI;oBACJ,OAAO;iBACV,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"retry.middleware.js","sourceRoot":"","sources":["../../../../src/resilience/middlewares/retry/retry.middleware.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { type Invokable, type ErrorPolicySettings } from "../../../utilities/_mo
10
10
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
11
11
  * @group Middlewares
12
12
  */
13
- export type OnRetryAttemptData<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
13
+ export type OnRetryAttemptData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
14
14
  attempt: number;
15
15
  args: TParameters;
16
16
  context: TContext;
@@ -20,13 +20,13 @@ export type OnRetryAttemptData<TParameters extends unknown[] = unknown[], TConte
20
20
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
21
21
  * @group Middlewares
22
22
  */
23
- export type OnExecutionAttempt<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = Invokable<[data: OnRetryAttemptData<TParameters, TContext>]>;
23
+ export type OnExecutionAttempt<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnRetryAttemptData<TParameters, TContext>]>;
24
24
  /**
25
25
  *
26
26
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
27
27
  * @group Middlewares
28
28
  */
29
- export type OnRetryDelayData<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
29
+ export type OnRetryDelayData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
30
30
  error: unknown;
31
31
  attempt: number;
32
32
  waitTime: ITimeSpan;
@@ -38,13 +38,13 @@ export type OnRetryDelayData<TParameters extends unknown[] = unknown[], TContext
38
38
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
39
39
  * @group Middlewares
40
40
  */
41
- export type OnRetryDelay<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = Invokable<[data: OnRetryDelayData<TParameters, TContext>]>;
41
+ export type OnRetryDelay<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnRetryDelayData<TParameters, TContext>]>;
42
42
  /**
43
43
  *
44
44
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
45
45
  * @group Middlewares
46
46
  */
47
- export type RetryCallbacks<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
47
+ export type RetryCallbacks<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
48
48
  /**
49
49
  * Callback {@link Invokable | `Invokable`} that will be called before execution attempt.
50
50
  */
@@ -59,7 +59,7 @@ export type RetryCallbacks<TParameters extends unknown[] = unknown[], TContext e
59
59
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
60
60
  * @group Middlewares
61
61
  */
62
- export type RetrySettings<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = RetryCallbacks<TParameters, TContext> & ErrorPolicySettings & {
62
+ export type RetrySettings<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = RetryCallbacks<TParameters, TContext> & ErrorPolicySettings & {
63
63
  /**
64
64
  * You can decide maximal times you can retry.
65
65
  * @default 4
@@ -38,4 +38,4 @@ import { type TimeoutSettings } from "../../../resilience/middlewares/timeout/ti
38
38
  * .invoke("URL");
39
39
  * ```
40
40
  */
41
- export declare function timeout<TParameters extends unknown[], TReturn, TContext extends HookContext>(settings?: NoInfer<TimeoutSettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
41
+ export declare function timeout<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings?: NoInfer<TimeoutSettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
@@ -10,7 +10,7 @@ import { type Invokable } from "../../../utilities/_module.js";
10
10
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
11
11
  * @group Middlewares
12
12
  */
13
- export type OnTimeoutData<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
13
+ export type OnTimeoutData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
14
14
  waitTime: TimeSpan;
15
15
  args: TParameters;
16
16
  context: TContext;
@@ -20,13 +20,13 @@ export type OnTimeoutData<TParameters extends unknown[] = unknown[], TContext ex
20
20
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
21
21
  * @group Middlewares
22
22
  */
23
- export type OnTimeout<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = Invokable<[data: OnTimeoutData<TParameters, TContext>]>;
23
+ export type OnTimeout<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnTimeoutData<TParameters, TContext>]>;
24
24
  /**
25
25
  *
26
26
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
27
27
  * @group Middlewares
28
28
  */
29
- export type TimeoutCallbacks<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
29
+ export type TimeoutCallbacks<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
30
30
  /**
31
31
  * Callback {@link Invokable | `Invokable`} that will be called before the timeout occurs.
32
32
  */
@@ -37,7 +37,7 @@ export type TimeoutCallbacks<TParameters extends unknown[] = unknown[], TContext
37
37
  * IMPORT_PATH: `"@daiso-tech/core/resilience"`
38
38
  * @group Middlewares
39
39
  */
40
- export type TimeoutSettings<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = TimeoutCallbacks<TParameters, TContext> & {
40
+ export type TimeoutSettings<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = TimeoutCallbacks<TParameters, TContext> & {
41
41
  /**
42
42
  * The maximum time to wait before automatically aborting the executing function.
43
43
  *
@@ -15,7 +15,7 @@ export declare class TimeoutResilienceError extends Error {
15
15
  * @group Errors
16
16
  */
17
17
  export declare class RetryResilienceError extends AggregateError {
18
- constructor(errors: unknown[], message: string);
18
+ constructor(errors: Array<unknown>, message: string);
19
19
  }
20
20
  /**
21
21
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resilience.errors.js","sourceRoot":"","sources":["../../src/resilience/resilience.errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,KAAe;QACxC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;IAC5C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACpD,YAAY,MAAiB,EAAE,OAAe;QAC1C,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC;IAC1C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,sBAAsB;CACzB,CAAC;AASX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC7B,KAAc;IAEd,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"resilience.errors.js","sourceRoot":"","sources":["../../src/resilience/resilience.errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,KAAe;QACxC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;IAC5C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACpD,YAAY,MAAsB,EAAE,OAAe;QAC/C,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC;IAC1C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,sBAAsB;CACzB,CAAC;AASX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC7B,KAAc;IAEd,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -40,7 +40,7 @@ export type IDatabaseSemaphoreTransaction = {
40
40
  * The `findSlots` returns the semaphore slot if it exists otherwise `null` is returned.
41
41
  *
42
42
  */
43
- findSlots(key: string): Promise<ISemaphoreSlotData[]>;
43
+ findSlots(key: string): Promise<Array<ISemaphoreSlotData>>;
44
44
  /**
45
45
  * The `upsertSemaphore` inserts a semaphore if it doesnt exist otherwise it will be updated.
46
46
  *
@@ -80,7 +80,7 @@ export type IDatabaseSemaphoreAdapter = {
80
80
  *
81
81
  * @returns Returns the slot expiration.
82
82
  */
83
- removeAllSlots(key: string): Promise<ISemaphoreSlotExpirationData[]>;
83
+ removeAllSlots(key: string): Promise<Array<ISemaphoreSlotExpirationData>>;
84
84
  /**
85
85
  * The `updateExpiration` updates the specified slot expiration as long as it is expireable and unexpired of the given semaphore.
86
86
  *
@@ -37,7 +37,7 @@ export type ISemaphoreUnacquiredState = {
37
37
  limit: number;
38
38
  freeSlotsCount: number;
39
39
  acquiredSlotsCount: number;
40
- acquiredSlots: string[];
40
+ acquiredSlots: Array<string>;
41
41
  };
42
42
  /**
43
43
  *
@@ -50,7 +50,7 @@ export type ISemaphoreAcquiredState = {
50
50
  remainingTime: TimeSpan | null;
51
51
  freeSlotsCount: number;
52
52
  acquiredSlotsCount: number;
53
- acquiredSlots: string[];
53
+ acquiredSlots: Array<string>;
54
54
  };
55
55
  /**
56
56
  *
@@ -60,7 +60,7 @@ export type ISemaphoreAcquiredState = {
60
60
  export type ISemaphoreLimitReachedState = {
61
61
  type: (typeof SEMAPHORE_STATE)["LIMIT_REACHED"];
62
62
  limit: number;
63
- acquiredSlots: string[];
63
+ acquiredSlots: Array<string>;
64
64
  };
65
65
  /**
66
66
  *
@@ -53,6 +53,15 @@ export type KyselySemaphoreAdapterSettings = {
53
53
  * @default true
54
54
  */
55
55
  shouldRemoveExpiredKeys?: boolean;
56
+ /**
57
+ * @default
58
+ * ```ts
59
+ * import { Transaction } from "kysely"
60
+ *
61
+ * !(settings.kysely instanceof Transaction)
62
+ * ```
63
+ */
64
+ enableTransactions?: boolean;
56
65
  };
57
66
  /**
58
67
  * To utilize the `KyselySemaphoreAdapter`, you must install the [`"kysely"`](https://www.npmjs.com/package/kysely) package and configure a `Kysely` class instance.
@@ -69,6 +78,7 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
69
78
  private readonly shouldRemoveExpiredKeys;
70
79
  private intervalId;
71
80
  private readonly isMysql;
81
+ private readonly enableTransactions;
72
82
  /**
73
83
  * @example
74
84
  * ```ts
@@ -88,6 +98,7 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
88
98
  * ```
89
99
  */
90
100
  constructor(settings: KyselySemaphoreAdapterSettings);
101
+ private _transaction;
91
102
  init(): Promise<void>;
92
103
  /**
93
104
  * Removes all related semaphore tables and their rows.
@@ -99,6 +110,6 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
99
110
  methods: IDatabaseSemaphoreTransaction
100
111
  ], Promise<TValue>>): Promise<TValue>;
101
112
  removeSlot(key: string, slotId: string): Promise<ISemaphoreSlotExpirationData | null>;
102
- removeAllSlots(key: string): Promise<ISemaphoreSlotExpirationData[]>;
113
+ removeAllSlots(key: string): Promise<Array<ISemaphoreSlotExpirationData>>;
103
114
  updateExpiration(key: string, slotId: string, expiration: Date): Promise<number>;
104
115
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Semaphore
3
3
  */
4
- import { MysqlAdapter } from "kysely";
4
+ import { MysqlAdapter, Transaction } from "kysely";
5
5
  import {} from "../../../../semaphore/contracts/_module.js";
6
6
  import {} from "../../../../time-span/contracts/_module.js";
7
7
  import { TimeSpan } from "../../../../time-span/implementations/_module.js";
@@ -98,6 +98,7 @@ export class KyselySemaphoreAdapter {
98
98
  shouldRemoveExpiredKeys;
99
99
  intervalId = null;
100
100
  isMysql;
101
+ enableTransactions;
101
102
  /**
102
103
  * @example
103
104
  * ```ts
@@ -117,12 +118,24 @@ export class KyselySemaphoreAdapter {
117
118
  * ```
118
119
  */
119
120
  constructor(settings) {
120
- const { kysely, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, } = settings;
121
+ const { kysely, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, enableTransactions = !(settings.kysely instanceof Transaction), } = settings;
121
122
  this.expiredKeysRemovalInterval = TimeSpan.fromTimeSpan(expiredKeysRemovalInterval);
122
123
  this.shouldRemoveExpiredKeys = shouldRemoveExpiredKeys;
123
124
  this.kysely = kysely;
124
125
  this.isMysql =
125
126
  this.kysely.getExecutor().adapter instanceof MysqlAdapter;
127
+ this.enableTransactions = enableTransactions;
128
+ }
129
+ _transaction(trxFn) {
130
+ if (this.enableTransactions) {
131
+ return this.kysely
132
+ .transaction()
133
+ .setIsolationLevel("serializable")
134
+ .execute(async (trx) => {
135
+ return await trxFn(trx);
136
+ });
137
+ }
138
+ return trxFn(this.kysely);
126
139
  }
127
140
  async init() {
128
141
  // Should throw if the table already exists thats why the try catch is used.
@@ -216,20 +229,14 @@ export class KyselySemaphoreAdapter {
216
229
  .execute();
217
230
  }
218
231
  async transaction(fn) {
219
- return await this.kysely
220
- .transaction()
221
- .setIsolationLevel("serializable")
222
- .execute(async (trx) => {
232
+ return await this._transaction(async (trx) => {
223
233
  return await fn(new DatabaseSemaphoreTransaction(trx));
224
234
  });
225
235
  }
226
236
  async removeSlot(key, slotId) {
227
237
  let row;
228
238
  if (this.isMysql) {
229
- row = await this.kysely
230
- .transaction()
231
- .setIsolationLevel("serializable")
232
- .execute(async (trx) => {
239
+ row = await this._transaction(async (trx) => {
233
240
  const row = await trx
234
241
  .selectFrom("semaphoreSlot")
235
242
  .select("semaphoreSlot.expiration")
@@ -267,10 +274,7 @@ export class KyselySemaphoreAdapter {
267
274
  async removeAllSlots(key) {
268
275
  let rows;
269
276
  if (this.isMysql) {
270
- rows = await this.kysely
271
- .transaction()
272
- .setIsolationLevel("serializable")
273
- .execute(async (trx) => {
277
+ rows = await this._transaction(async (trx) => {
274
278
  const rows = trx
275
279
  .selectFrom("semaphoreSlot")
276
280
  .where("semaphoreSlot.key", "=", key)