nicot 1.2.11 → 1.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,34 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __commonJS = (cb, mod) => function __require2() {
14
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30
+ mod
31
+ ));
3
32
  var __decorateClass = (decorators, target, key, kind) => {
4
33
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
34
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
@@ -9,6 +38,539 @@ var __decorateClass = (decorators, target, key, kind) => {
9
38
  return result;
10
39
  };
11
40
 
41
+ // node_modules/@nestjs/typeorm/dist/typeorm.constants.js
42
+ var require_typeorm_constants = __commonJS({
43
+ "node_modules/@nestjs/typeorm/dist/typeorm.constants.js"(exports) {
44
+ "use strict";
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.DEFAULT_DATA_SOURCE_NAME = exports.TYPEORM_MODULE_ID = exports.TYPEORM_MODULE_OPTIONS = void 0;
47
+ exports.TYPEORM_MODULE_OPTIONS = "TypeOrmModuleOptions";
48
+ exports.TYPEORM_MODULE_ID = "TypeOrmModuleId";
49
+ exports.DEFAULT_DATA_SOURCE_NAME = "default";
50
+ }
51
+ });
52
+
53
+ // node_modules/@nestjs/typeorm/dist/exceptions/circular-dependency.exception.js
54
+ var require_circular_dependency_exception = __commonJS({
55
+ "node_modules/@nestjs/typeorm/dist/exceptions/circular-dependency.exception.js"(exports) {
56
+ "use strict";
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ exports.CircularDependencyException = void 0;
59
+ var CircularDependencyException = class extends Error {
60
+ constructor(context) {
61
+ const ctx = context ? ` inside ${context}` : ``;
62
+ super(`A circular dependency has been detected${ctx}. Please, make sure that each side of a bidirectional relationships are decorated with "forwardRef()". Also, try to eliminate barrel files because they can lead to an unexpected behavior too.`);
63
+ }
64
+ };
65
+ exports.CircularDependencyException = CircularDependencyException;
66
+ }
67
+ });
68
+
69
+ // node_modules/@nestjs/typeorm/dist/common/typeorm.utils.js
70
+ var require_typeorm_utils = __commonJS({
71
+ "node_modules/@nestjs/typeorm/dist/common/typeorm.utils.js"(exports) {
72
+ "use strict";
73
+ Object.defineProperty(exports, "__esModule", { value: true });
74
+ exports.generateString = exports.getConnectionToken = void 0;
75
+ exports.getRepositoryToken = getRepositoryToken;
76
+ exports.getCustomRepositoryToken = getCustomRepositoryToken;
77
+ exports.getDataSourceToken = getDataSourceToken;
78
+ exports.getDataSourcePrefix = getDataSourcePrefix;
79
+ exports.getEntityManagerToken = getEntityManagerToken2;
80
+ exports.handleRetry = handleRetry;
81
+ exports.getDataSourceName = getDataSourceName;
82
+ var common_1 = __require("@nestjs/common");
83
+ var operators_1 = __require("rxjs/operators");
84
+ var typeorm_1 = __require("typeorm");
85
+ var circular_dependency_exception_1 = require_circular_dependency_exception();
86
+ var typeorm_constants_1 = require_typeorm_constants();
87
+ var logger = new common_1.Logger("TypeOrmModule");
88
+ function getRepositoryToken(entity, dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
89
+ if (entity === null || entity === void 0) {
90
+ throw new circular_dependency_exception_1.CircularDependencyException("@InjectRepository()");
91
+ }
92
+ const dataSourcePrefix = getDataSourcePrefix(dataSource);
93
+ if (entity instanceof Function && (entity.prototype instanceof typeorm_1.Repository || entity.prototype instanceof typeorm_1.AbstractRepository)) {
94
+ if (!dataSourcePrefix) {
95
+ return entity;
96
+ }
97
+ return `${dataSourcePrefix}${getCustomRepositoryToken(entity)}`;
98
+ }
99
+ if (entity instanceof typeorm_1.EntitySchema) {
100
+ return `${dataSourcePrefix}${entity.options.target ? entity.options.target.name : entity.options.name}Repository`;
101
+ }
102
+ return `${dataSourcePrefix}${entity.name}Repository`;
103
+ }
104
+ function getCustomRepositoryToken(repository) {
105
+ if (repository === null || repository === void 0) {
106
+ throw new circular_dependency_exception_1.CircularDependencyException("@InjectRepository()");
107
+ }
108
+ return repository.name;
109
+ }
110
+ function getDataSourceToken(dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
111
+ return typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME === dataSource ? typeorm_1.DataSource ?? typeorm_1.Connection : "string" === typeof dataSource ? `${dataSource}DataSource` : typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME === dataSource.name || !dataSource.name ? typeorm_1.DataSource ?? typeorm_1.Connection : `${dataSource.name}DataSource`;
112
+ }
113
+ exports.getConnectionToken = getDataSourceToken;
114
+ function getDataSourcePrefix(dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
115
+ if (dataSource === typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
116
+ return "";
117
+ }
118
+ if (typeof dataSource === "string") {
119
+ return dataSource + "_";
120
+ }
121
+ if (dataSource.name === typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME || !dataSource.name) {
122
+ return "";
123
+ }
124
+ return dataSource.name + "_";
125
+ }
126
+ function getEntityManagerToken2(dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
127
+ return typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME === dataSource ? typeorm_1.EntityManager : "string" === typeof dataSource ? `${dataSource}EntityManager` : typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME === dataSource.name || !dataSource.name ? typeorm_1.EntityManager : `${dataSource.name}EntityManager`;
128
+ }
129
+ function handleRetry(retryAttempts = 9, retryDelay = 3e3, dataSourceName = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME, verboseRetryLog = false, toRetry) {
130
+ return (source) => source.pipe((0, operators_1.retryWhen)((e) => e.pipe((0, operators_1.scan)((errorCount, error) => {
131
+ if (toRetry && !toRetry(error)) {
132
+ throw error;
133
+ }
134
+ const dataSourceInfo = dataSourceName === typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME ? "" : ` (${dataSourceName})`;
135
+ const verboseMessage = verboseRetryLog ? ` Message: ${error.message}.` : "";
136
+ logger.error(`Unable to connect to the database${dataSourceInfo}.${verboseMessage} Retrying (${errorCount + 1})...`, error.stack);
137
+ if (errorCount + 1 >= retryAttempts) {
138
+ throw error;
139
+ }
140
+ return errorCount + 1;
141
+ }, 0), (0, operators_1.delay)(retryDelay))));
142
+ }
143
+ function getDataSourceName(options) {
144
+ return options && options.name ? options.name : typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME;
145
+ }
146
+ var generateString = () => crypto.randomUUID();
147
+ exports.generateString = generateString;
148
+ }
149
+ });
150
+
151
+ // node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.js
152
+ var require_typeorm_decorators = __commonJS({
153
+ "node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.js"(exports) {
154
+ "use strict";
155
+ Object.defineProperty(exports, "__esModule", { value: true });
156
+ exports.InjectEntityManager = exports.InjectConnection = exports.InjectDataSource = exports.InjectRepository = void 0;
157
+ var common_1 = __require("@nestjs/common");
158
+ var typeorm_constants_1 = require_typeorm_constants();
159
+ var typeorm_utils_1 = require_typeorm_utils();
160
+ var InjectRepository = (entity, dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) => (0, common_1.Inject)((0, typeorm_utils_1.getRepositoryToken)(entity, dataSource));
161
+ exports.InjectRepository = InjectRepository;
162
+ var InjectDataSource = (dataSource) => (0, common_1.Inject)((0, typeorm_utils_1.getDataSourceToken)(dataSource));
163
+ exports.InjectDataSource = InjectDataSource;
164
+ exports.InjectConnection = exports.InjectDataSource;
165
+ var InjectEntityManager = (dataSource) => (0, common_1.Inject)((0, typeorm_utils_1.getEntityManagerToken)(dataSource));
166
+ exports.InjectEntityManager = InjectEntityManager;
167
+ }
168
+ });
169
+
170
+ // node_modules/@nestjs/typeorm/dist/common/index.js
171
+ var require_common = __commonJS({
172
+ "node_modules/@nestjs/typeorm/dist/common/index.js"(exports) {
173
+ "use strict";
174
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
175
+ if (k2 === void 0) k2 = k;
176
+ var desc = Object.getOwnPropertyDescriptor(m, k);
177
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
178
+ desc = { enumerable: true, get: function() {
179
+ return m[k];
180
+ } };
181
+ }
182
+ Object.defineProperty(o, k2, desc);
183
+ }) : (function(o, m, k, k2) {
184
+ if (k2 === void 0) k2 = k;
185
+ o[k2] = m[k];
186
+ }));
187
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
188
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
189
+ };
190
+ Object.defineProperty(exports, "__esModule", { value: true });
191
+ __exportStar(require_typeorm_decorators(), exports);
192
+ __exportStar(require_typeorm_utils(), exports);
193
+ }
194
+ });
195
+
196
+ // node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.js
197
+ var require_typeorm_options_interface = __commonJS({
198
+ "node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.js"(exports) {
199
+ "use strict";
200
+ Object.defineProperty(exports, "__esModule", { value: true });
201
+ }
202
+ });
203
+
204
+ // node_modules/@nestjs/typeorm/dist/interfaces/index.js
205
+ var require_interfaces = __commonJS({
206
+ "node_modules/@nestjs/typeorm/dist/interfaces/index.js"(exports) {
207
+ "use strict";
208
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
209
+ if (k2 === void 0) k2 = k;
210
+ var desc = Object.getOwnPropertyDescriptor(m, k);
211
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
212
+ desc = { enumerable: true, get: function() {
213
+ return m[k];
214
+ } };
215
+ }
216
+ Object.defineProperty(o, k2, desc);
217
+ }) : (function(o, m, k, k2) {
218
+ if (k2 === void 0) k2 = k;
219
+ o[k2] = m[k];
220
+ }));
221
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
222
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
223
+ };
224
+ Object.defineProperty(exports, "__esModule", { value: true });
225
+ __exportStar(require_typeorm_options_interface(), exports);
226
+ }
227
+ });
228
+
229
+ // node_modules/@nestjs/typeorm/dist/entities-metadata.storage.js
230
+ var require_entities_metadata_storage = __commonJS({
231
+ "node_modules/@nestjs/typeorm/dist/entities-metadata.storage.js"(exports) {
232
+ "use strict";
233
+ Object.defineProperty(exports, "__esModule", { value: true });
234
+ exports.EntitiesMetadataStorage = void 0;
235
+ var EntitiesMetadataStorage = class {
236
+ static addEntitiesByDataSource(dataSource, entities) {
237
+ const dataSourceToken = typeof dataSource === "string" ? dataSource : dataSource.name;
238
+ if (!dataSourceToken) {
239
+ return;
240
+ }
241
+ let collection = this.storage.get(dataSourceToken);
242
+ if (!collection) {
243
+ collection = [];
244
+ this.storage.set(dataSourceToken, collection);
245
+ }
246
+ entities.forEach((entity) => {
247
+ if (collection.includes(entity)) {
248
+ return;
249
+ }
250
+ collection.push(entity);
251
+ });
252
+ }
253
+ static getEntitiesByDataSource(dataSource) {
254
+ const dataSourceToken = typeof dataSource === "string" ? dataSource : dataSource.name;
255
+ if (!dataSourceToken) {
256
+ return [];
257
+ }
258
+ return this.storage.get(dataSourceToken) || [];
259
+ }
260
+ };
261
+ exports.EntitiesMetadataStorage = EntitiesMetadataStorage;
262
+ EntitiesMetadataStorage.storage = /* @__PURE__ */ new Map();
263
+ }
264
+ });
265
+
266
+ // node_modules/@nestjs/typeorm/dist/typeorm-core.module.js
267
+ var require_typeorm_core_module = __commonJS({
268
+ "node_modules/@nestjs/typeorm/dist/typeorm-core.module.js"(exports) {
269
+ "use strict";
270
+ var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) {
271
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
272
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
273
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
274
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
275
+ };
276
+ var __metadata = exports && exports.__metadata || function(k, v) {
277
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
278
+ };
279
+ var __param = exports && exports.__param || function(paramIndex, decorator) {
280
+ return function(target, key) {
281
+ decorator(target, key, paramIndex);
282
+ };
283
+ };
284
+ var TypeOrmCoreModule_1;
285
+ Object.defineProperty(exports, "__esModule", { value: true });
286
+ exports.TypeOrmCoreModule = void 0;
287
+ var common_1 = __require("@nestjs/common");
288
+ var core_1 = __require("@nestjs/core");
289
+ var rxjs_1 = __require("rxjs");
290
+ var typeorm_1 = __require("typeorm");
291
+ var typeorm_utils_1 = require_typeorm_utils();
292
+ var entities_metadata_storage_1 = require_entities_metadata_storage();
293
+ var typeorm_constants_1 = require_typeorm_constants();
294
+ var TypeOrmCoreModule = TypeOrmCoreModule_1 = class TypeOrmCoreModule {
295
+ constructor(options, moduleRef) {
296
+ this.options = options;
297
+ this.moduleRef = moduleRef;
298
+ this.logger = new common_1.Logger("TypeOrmModule");
299
+ }
300
+ static forRoot(options = {}) {
301
+ const typeOrmModuleOptions = {
302
+ provide: typeorm_constants_1.TYPEORM_MODULE_OPTIONS,
303
+ useValue: options
304
+ };
305
+ const dataSourceProvider = {
306
+ provide: (0, typeorm_utils_1.getDataSourceToken)(options),
307
+ useFactory: async () => await this.createDataSourceFactory(options)
308
+ };
309
+ const entityManagerProvider = this.createEntityManagerProvider(options);
310
+ const providers = [
311
+ entityManagerProvider,
312
+ dataSourceProvider,
313
+ typeOrmModuleOptions
314
+ ];
315
+ const exports2 = [entityManagerProvider, dataSourceProvider];
316
+ if (dataSourceProvider.provide === typeorm_1.DataSource) {
317
+ providers.push({
318
+ provide: typeorm_1.Connection,
319
+ useExisting: typeorm_1.DataSource
320
+ });
321
+ exports2.push(typeorm_1.Connection);
322
+ }
323
+ return {
324
+ module: TypeOrmCoreModule_1,
325
+ providers,
326
+ exports: exports2
327
+ };
328
+ }
329
+ static forRootAsync(options) {
330
+ const dataSourceProvider = {
331
+ provide: (0, typeorm_utils_1.getDataSourceToken)(options),
332
+ useFactory: async (typeOrmOptions) => {
333
+ if (options.name) {
334
+ return await this.createDataSourceFactory({
335
+ ...typeOrmOptions,
336
+ name: options.name
337
+ }, options.dataSourceFactory);
338
+ }
339
+ return await this.createDataSourceFactory(typeOrmOptions, options.dataSourceFactory);
340
+ },
341
+ inject: [typeorm_constants_1.TYPEORM_MODULE_OPTIONS]
342
+ };
343
+ const entityManagerProvider = {
344
+ provide: (0, typeorm_utils_1.getEntityManagerToken)(options),
345
+ useFactory: (dataSource) => dataSource.manager,
346
+ inject: [(0, typeorm_utils_1.getDataSourceToken)(options)]
347
+ };
348
+ const asyncProviders = this.createAsyncProviders(options);
349
+ const providers = [
350
+ ...asyncProviders,
351
+ entityManagerProvider,
352
+ dataSourceProvider,
353
+ {
354
+ provide: typeorm_constants_1.TYPEORM_MODULE_ID,
355
+ useValue: (0, typeorm_utils_1.generateString)()
356
+ },
357
+ ...options.extraProviders || []
358
+ ];
359
+ const exports2 = [
360
+ entityManagerProvider,
361
+ dataSourceProvider
362
+ ];
363
+ if (dataSourceProvider.provide === typeorm_1.DataSource) {
364
+ providers.push({
365
+ provide: typeorm_1.Connection,
366
+ useExisting: typeorm_1.DataSource
367
+ });
368
+ exports2.push(typeorm_1.Connection);
369
+ }
370
+ return {
371
+ module: TypeOrmCoreModule_1,
372
+ imports: options.imports,
373
+ providers,
374
+ exports: exports2
375
+ };
376
+ }
377
+ async onApplicationShutdown() {
378
+ const dataSource = this.moduleRef.get((0, typeorm_utils_1.getDataSourceToken)(this.options));
379
+ try {
380
+ if (dataSource && dataSource.isInitialized) {
381
+ await dataSource.destroy();
382
+ }
383
+ } catch (e) {
384
+ this.logger.error(e?.message);
385
+ }
386
+ }
387
+ static createAsyncProviders(options) {
388
+ if (options.useExisting || options.useFactory) {
389
+ return [this.createAsyncOptionsProvider(options)];
390
+ }
391
+ const useClass = options.useClass;
392
+ return [
393
+ this.createAsyncOptionsProvider(options),
394
+ {
395
+ provide: useClass,
396
+ useClass
397
+ }
398
+ ];
399
+ }
400
+ static createAsyncOptionsProvider(options) {
401
+ if (options.useFactory) {
402
+ return {
403
+ provide: typeorm_constants_1.TYPEORM_MODULE_OPTIONS,
404
+ useFactory: options.useFactory,
405
+ inject: options.inject || []
406
+ };
407
+ }
408
+ const inject = [
409
+ options.useClass || options.useExisting
410
+ ];
411
+ return {
412
+ provide: typeorm_constants_1.TYPEORM_MODULE_OPTIONS,
413
+ useFactory: async (optionsFactory) => await optionsFactory.createTypeOrmOptions(options.name),
414
+ inject
415
+ };
416
+ }
417
+ static createEntityManagerProvider(options) {
418
+ return {
419
+ provide: (0, typeorm_utils_1.getEntityManagerToken)(options),
420
+ useFactory: (dataSource) => dataSource.manager,
421
+ inject: [(0, typeorm_utils_1.getDataSourceToken)(options)]
422
+ };
423
+ }
424
+ static async createDataSourceFactory(options, dataSourceFactory) {
425
+ const dataSourceToken = (0, typeorm_utils_1.getDataSourceName)(options);
426
+ const createTypeormDataSource = dataSourceFactory ?? ((options2) => {
427
+ return typeorm_1.DataSource === void 0 ? (0, typeorm_1.createConnection)(options2) : new typeorm_1.DataSource(options2);
428
+ });
429
+ return await (0, rxjs_1.lastValueFrom)((0, rxjs_1.defer)(async () => {
430
+ let dataSource;
431
+ if (!options.autoLoadEntities) {
432
+ dataSource = await createTypeormDataSource(options);
433
+ } else {
434
+ let entities = options.entities;
435
+ if (Array.isArray(entities)) {
436
+ entities = entities.concat(entities_metadata_storage_1.EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken));
437
+ } else {
438
+ entities = entities_metadata_storage_1.EntitiesMetadataStorage.getEntitiesByDataSource(dataSourceToken);
439
+ }
440
+ dataSource = await createTypeormDataSource({
441
+ ...options,
442
+ entities
443
+ });
444
+ }
445
+ return dataSource.initialize && !dataSource.isInitialized && !options.manualInitialization ? dataSource.initialize() : dataSource;
446
+ }).pipe((0, typeorm_utils_1.handleRetry)(options.retryAttempts, options.retryDelay, dataSourceToken, options.verboseRetryLog, options.toRetry)));
447
+ }
448
+ };
449
+ exports.TypeOrmCoreModule = TypeOrmCoreModule;
450
+ exports.TypeOrmCoreModule = TypeOrmCoreModule = TypeOrmCoreModule_1 = __decorate([
451
+ (0, common_1.Global)(),
452
+ (0, common_1.Module)({}),
453
+ __param(0, (0, common_1.Inject)(typeorm_constants_1.TYPEORM_MODULE_OPTIONS)),
454
+ __metadata("design:paramtypes", [Object, core_1.ModuleRef])
455
+ ], TypeOrmCoreModule);
456
+ }
457
+ });
458
+
459
+ // node_modules/@nestjs/typeorm/dist/typeorm.providers.js
460
+ var require_typeorm_providers = __commonJS({
461
+ "node_modules/@nestjs/typeorm/dist/typeorm.providers.js"(exports) {
462
+ "use strict";
463
+ Object.defineProperty(exports, "__esModule", { value: true });
464
+ exports.createTypeOrmProviders = createTypeOrmProviders;
465
+ var typeorm_1 = __require("typeorm");
466
+ var typeorm_utils_1 = require_typeorm_utils();
467
+ function createTypeOrmProviders(entities, dataSource) {
468
+ return (entities || []).map((entity) => ({
469
+ provide: (0, typeorm_utils_1.getRepositoryToken)(entity, dataSource),
470
+ useFactory: (dataSource2) => {
471
+ const entityMetadata = dataSource2.entityMetadatas.find((meta) => meta.target === entity);
472
+ const isTreeEntity = typeof entityMetadata?.treeType !== "undefined";
473
+ return isTreeEntity ? dataSource2.getTreeRepository(entity) : dataSource2.options.type === "mongodb" ? dataSource2.getMongoRepository(entity) : dataSource2.getRepository(entity);
474
+ },
475
+ inject: [(0, typeorm_utils_1.getDataSourceToken)(dataSource)],
476
+ /**
477
+ * Extra property to workaround dynamic modules serialisation issue
478
+ * that occurs when "TypeOrm#forFeature()" method is called with the same number
479
+ * of arguments and all entities share the same class names.
480
+ */
481
+ targetEntitySchema: (0, typeorm_1.getMetadataArgsStorage)().tables.find((item) => item.target === entity)
482
+ }));
483
+ }
484
+ }
485
+ });
486
+
487
+ // node_modules/@nestjs/typeorm/dist/typeorm.module.js
488
+ var require_typeorm_module = __commonJS({
489
+ "node_modules/@nestjs/typeorm/dist/typeorm.module.js"(exports) {
490
+ "use strict";
491
+ var __decorate = exports && exports.__decorate || function(decorators, target, key, desc) {
492
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
493
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
494
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
495
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
496
+ };
497
+ var TypeOrmModule_1;
498
+ Object.defineProperty(exports, "__esModule", { value: true });
499
+ exports.TypeOrmModule = void 0;
500
+ var common_1 = __require("@nestjs/common");
501
+ var entities_metadata_storage_1 = require_entities_metadata_storage();
502
+ var typeorm_core_module_1 = require_typeorm_core_module();
503
+ var typeorm_constants_1 = require_typeorm_constants();
504
+ var typeorm_providers_1 = require_typeorm_providers();
505
+ var TypeOrmModule2 = TypeOrmModule_1 = class TypeOrmModule {
506
+ static forRoot(options) {
507
+ return {
508
+ module: TypeOrmModule_1,
509
+ imports: [typeorm_core_module_1.TypeOrmCoreModule.forRoot(options)]
510
+ };
511
+ }
512
+ static forFeature(entities = [], dataSource = typeorm_constants_1.DEFAULT_DATA_SOURCE_NAME) {
513
+ const providers = (0, typeorm_providers_1.createTypeOrmProviders)(entities, dataSource);
514
+ entities_metadata_storage_1.EntitiesMetadataStorage.addEntitiesByDataSource(dataSource, [...entities]);
515
+ return {
516
+ module: TypeOrmModule_1,
517
+ providers,
518
+ exports: providers
519
+ };
520
+ }
521
+ static forRootAsync(options) {
522
+ return {
523
+ module: TypeOrmModule_1,
524
+ imports: [typeorm_core_module_1.TypeOrmCoreModule.forRootAsync(options)]
525
+ };
526
+ }
527
+ };
528
+ exports.TypeOrmModule = TypeOrmModule2;
529
+ exports.TypeOrmModule = TypeOrmModule2 = TypeOrmModule_1 = __decorate([
530
+ (0, common_1.Module)({})
531
+ ], TypeOrmModule2);
532
+ }
533
+ });
534
+
535
+ // node_modules/@nestjs/typeorm/dist/index.js
536
+ var require_dist = __commonJS({
537
+ "node_modules/@nestjs/typeorm/dist/index.js"(exports) {
538
+ "use strict";
539
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
540
+ if (k2 === void 0) k2 = k;
541
+ var desc = Object.getOwnPropertyDescriptor(m, k);
542
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
543
+ desc = { enumerable: true, get: function() {
544
+ return m[k];
545
+ } };
546
+ }
547
+ Object.defineProperty(o, k2, desc);
548
+ }) : (function(o, m, k, k2) {
549
+ if (k2 === void 0) k2 = k;
550
+ o[k2] = m[k];
551
+ }));
552
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
553
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
554
+ };
555
+ Object.defineProperty(exports, "__esModule", { value: true });
556
+ __exportStar(require_common(), exports);
557
+ __exportStar(require_interfaces(), exports);
558
+ __exportStar(require_typeorm_module(), exports);
559
+ }
560
+ });
561
+
562
+ // node_modules/@nestjs/typeorm/index.js
563
+ var require_typeorm = __commonJS({
564
+ "node_modules/@nestjs/typeorm/index.js"(exports) {
565
+ "use strict";
566
+ function __export(m) {
567
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
568
+ }
569
+ exports.__esModule = true;
570
+ __export(require_dist());
571
+ }
572
+ });
573
+
12
574
  // index.ts
13
575
  export * from "nesties";
14
576
 
@@ -1701,7 +2263,11 @@ var CrudBase = class {
1701
2263
  const existingEnt = await repo.findOne({
1702
2264
  where: { id: ent.id },
1703
2265
  select: this.crudOptions.createOrUpdate ? void 0 : ["id", "deleteTime"],
1704
- withDeleted: true
2266
+ withDeleted: true,
2267
+ lock: {
2268
+ mode: "pessimistic_write",
2269
+ tables: [repo.metadata.tableName]
2270
+ }
1705
2271
  });
1706
2272
  if (existingEnt) {
1707
2273
  if (existingEnt.deleteTime) {
@@ -2025,29 +2591,33 @@ var CrudBase = class {
2025
2591
  if (!await this.repo.exists({ where })) {
2026
2592
  throw404();
2027
2593
  }
2028
- const isPlainObject = (v) => {
2029
- if (!v || typeof v !== "object") return false;
2030
- const proto = Object.getPrototypeOf(v);
2031
- return proto === Object.prototype || proto === null;
2594
+ const isAtomicObject = (v) => {
2595
+ if (!v || typeof v !== "object") return true;
2596
+ if (v instanceof Date) return true;
2597
+ if (typeof Buffer !== "undefined" && Buffer.isBuffer(v)) return true;
2598
+ if (ArrayBuffer.isView(v) || v instanceof ArrayBuffer) return true;
2599
+ return false;
2032
2600
  };
2033
- const cloneAtomicOrJson = (v) => {
2601
+ const cloneForSnapshot = (v) => {
2034
2602
  if (v == null) return v;
2035
2603
  if (typeof v !== "object") return v;
2036
2604
  if (v instanceof Date) return new Date(v.getTime());
2037
- if (typeof Buffer !== "undefined" && Buffer.isBuffer(v)) {
2605
+ if (typeof Buffer !== "undefined" && Buffer.isBuffer(v))
2038
2606
  return Buffer.from(v);
2039
- }
2040
- if (ArrayBuffer.isView(v)) {
2041
- const ctor = v.constructor;
2042
- return new ctor(v.slice?.() ?? v);
2043
- }
2607
+ if (ArrayBuffer.isView(v)) return v.slice?.() ?? v;
2044
2608
  if (v instanceof ArrayBuffer) return v.slice(0);
2045
- if (Array.isArray(v) || isPlainObject(v)) {
2046
- const sc = globalThis.structuredClone;
2047
- if (typeof sc === "function") return sc(v);
2048
- return JSON.parse(JSON.stringify(v));
2609
+ const sc = globalThis.structuredClone;
2610
+ if (typeof sc === "function") {
2611
+ try {
2612
+ return sc(v);
2613
+ } catch {
2614
+ }
2049
2615
  }
2050
- return v;
2616
+ if (Array.isArray(v)) return v.map(cloneForSnapshot);
2617
+ const out = {};
2618
+ for (const k of Object.keys(v))
2619
+ out[k] = cloneForSnapshot(v[k]);
2620
+ return out;
2051
2621
  };
2052
2622
  const deepEqual = (a, b) => {
2053
2623
  if (a === b) return true;
@@ -2071,14 +2641,14 @@ var CrudBase = class {
2071
2641
  for (let i = 0; i < ua.length; i++) if (ua[i] !== ub[i]) return false;
2072
2642
  return true;
2073
2643
  }
2074
- if (Array.isArray(a) || Array.isArray(b)) {
2075
- if (!Array.isArray(a) || !Array.isArray(b)) return false;
2076
- if (a.length !== b.length) return false;
2077
- for (let i = 0; i < a.length; i++)
2078
- if (!deepEqual(a[i], b[i])) return false;
2079
- return true;
2080
- }
2081
2644
  if (typeof a === "object" && typeof b === "object") {
2645
+ if (Array.isArray(a) || Array.isArray(b)) {
2646
+ if (!Array.isArray(a) || !Array.isArray(b)) return false;
2647
+ if (a.length !== b.length) return false;
2648
+ for (let i = 0; i < a.length; i++)
2649
+ if (!deepEqual(a[i], b[i])) return false;
2650
+ return true;
2651
+ }
2082
2652
  const keys = /* @__PURE__ */ new Set([...Object.keys(a), ...Object.keys(b)]);
2083
2653
  for (const k of keys) {
2084
2654
  if (!deepEqual(a[k], b[k])) return false;
@@ -2100,11 +2670,8 @@ var CrudBase = class {
2100
2670
  const snapshot = {};
2101
2671
  const snapshotHasKey = {};
2102
2672
  for (const key of columns) {
2103
- snapshotHasKey[key] = Object.prototype.hasOwnProperty.call(
2104
- ent,
2105
- key
2106
- );
2107
- snapshot[key] = cloneAtomicOrJson(ent[key]);
2673
+ snapshotHasKey[key] = Object.prototype.hasOwnProperty.call(ent, key);
2674
+ snapshot[key] = cloneForSnapshot(ent[key]);
2108
2675
  }
2109
2676
  const flush = async () => {
2110
2677
  const patch = {};
@@ -2123,7 +2690,7 @@ var CrudBase = class {
2123
2690
  if (!deepEqual(before, current)) {
2124
2691
  patch[key] = current;
2125
2692
  snapshotHasKey[key] = true;
2126
- snapshot[key] = cloneAtomicOrJson(current);
2693
+ snapshot[key] = cloneForSnapshot(current);
2127
2694
  }
2128
2695
  }
2129
2696
  if (Object.keys(patch).length) {
@@ -2134,7 +2701,8 @@ var CrudBase = class {
2134
2701
  await flush();
2135
2702
  return result;
2136
2703
  };
2137
- const res = await (options.repo ? op(options.repo) : this.repo.manager.transaction(
2704
+ const hasActiveTx = !!this.repo.manager.queryRunner?.isTransactionActive;
2705
+ const res = await (options.repo ? op(options.repo) : hasActiveTx ? op(this.repo) : this.repo.manager.transaction(
2138
2706
  (tdb) => op(tdb.getRepository(this.entityClass))
2139
2707
  ));
2140
2708
  return res == null ? new BlankReturnMessageDto2(200, "success") : new GenericReturnMessageDto(200, "success", res);
@@ -3098,6 +3666,195 @@ var applyQueryMatchBooleanMySQL = createQueryCondition(
3098
3666
  }
3099
3667
  }
3100
3668
  );
3669
+
3670
+ // src/transactional-typeorm.module.ts
3671
+ var import_typeorm8 = __toESM(require_typeorm());
3672
+ import { EntityManager } from "typeorm";
3673
+ import {
3674
+ Inject as Inject2,
3675
+ Injectable,
3676
+ Module,
3677
+ Scope
3678
+ } from "@nestjs/common";
3679
+ import { createProvider } from "nesties";
3680
+ import { REQUEST } from "@nestjs/core";
3681
+
3682
+ // src/utility/create-dynamic-fetcher-proxy.ts
3683
+ var createDynamicFetcherProxy = (initial, fetcher) => {
3684
+ return new Proxy(initial, {
3685
+ get(_target, prop, receiver) {
3686
+ const current = fetcher();
3687
+ const value = Reflect.get(current, prop, receiver);
3688
+ if (typeof value === "function") {
3689
+ return value.bind(current);
3690
+ }
3691
+ return value;
3692
+ },
3693
+ set(_target, prop, value, receiver) {
3694
+ const current = fetcher();
3695
+ return Reflect.set(current, prop, value, receiver);
3696
+ },
3697
+ has(_target, prop) {
3698
+ const current = fetcher();
3699
+ return Reflect.has(current, prop);
3700
+ },
3701
+ ownKeys(_target) {
3702
+ const current = fetcher();
3703
+ return Reflect.ownKeys(current);
3704
+ },
3705
+ getOwnPropertyDescriptor(_target, prop) {
3706
+ const current = fetcher();
3707
+ return Reflect.getOwnPropertyDescriptor(current, prop);
3708
+ },
3709
+ defineProperty(_target, prop, descriptor) {
3710
+ const current = fetcher();
3711
+ return Reflect.defineProperty(current, prop, descriptor);
3712
+ },
3713
+ deleteProperty(_target, prop) {
3714
+ const current = fetcher();
3715
+ return Reflect.deleteProperty(current, prop);
3716
+ }
3717
+ });
3718
+ };
3719
+
3720
+ // src/utility/create-inject-from-token-factory.ts
3721
+ import { Inject } from "@nestjs/common";
3722
+ var createInjectFromTokenFactory = (factory) => (...params) => Inject(factory(...params));
3723
+
3724
+ // src/transactional-typeorm.module.ts
3725
+ import { Observable } from "rxjs";
3726
+ var requestWeakMap = /* @__PURE__ */ new WeakMap();
3727
+ var normalizeDataSourceToken = (token) => typeof token === "string" ? token : token.name || token.toString();
3728
+ var TransactionalTypeOrmInterceptor = (dataSource) => {
3729
+ const token = (0, import_typeorm8.getEntityManagerToken)(dataSource);
3730
+ const interceptorClass = class SpecificTransactionalTypeOrmInterceptor {
3731
+ constructor(entityManager) {
3732
+ this.entityManager = entityManager;
3733
+ }
3734
+ intercept(context, next) {
3735
+ const request = context.switchToHttp().getRequest();
3736
+ return new Observable((observer) => {
3737
+ let innerSub = null;
3738
+ let finished = false;
3739
+ let abort;
3740
+ const aborted = new Promise((_6, reject) => {
3741
+ abort = reject;
3742
+ });
3743
+ const run = this.entityManager.transaction(async (txEm) => {
3744
+ requestWeakMap.set(request, txEm);
3745
+ const completion = new Promise((resolve, reject) => {
3746
+ innerSub = next.handle().subscribe({
3747
+ next: (v) => observer.next(v),
3748
+ error: (err) => {
3749
+ finished = true;
3750
+ observer.error(err);
3751
+ reject(err);
3752
+ },
3753
+ complete: () => {
3754
+ finished = true;
3755
+ observer.complete();
3756
+ resolve();
3757
+ }
3758
+ });
3759
+ });
3760
+ await Promise.race([completion, aborted]);
3761
+ }).finally(() => {
3762
+ requestWeakMap.delete(request);
3763
+ }).catch((err) => {
3764
+ if (!finished) observer.error(err);
3765
+ });
3766
+ return () => {
3767
+ try {
3768
+ innerSub?.unsubscribe();
3769
+ } finally {
3770
+ if (!finished) {
3771
+ abort(new Error("Request aborted / subscription unsubscribed"));
3772
+ }
3773
+ }
3774
+ };
3775
+ });
3776
+ }
3777
+ };
3778
+ Object.defineProperty(interceptorClass, "name", {
3779
+ value: `TransactionalTypeOrmInterceptor_${normalizeDataSourceToken(token)}`
3780
+ });
3781
+ Reflect.defineMetadata(
3782
+ "design:paramtypes",
3783
+ [EntityManager],
3784
+ interceptorClass
3785
+ );
3786
+ Inject2(token)(interceptorClass.prototype, void 0, 0);
3787
+ Injectable()(interceptorClass);
3788
+ return interceptorClass;
3789
+ };
3790
+ var getTransactionalEntityManagerToken = (dataSource) => `Transactional${normalizeDataSourceToken((0, import_typeorm8.getEntityManagerToken)(dataSource))}`;
3791
+ var getTransactionalEntityManagerProvider = (dataSource) => createProvider(
3792
+ {
3793
+ provide: getTransactionalEntityManagerToken(dataSource),
3794
+ inject: [(0, import_typeorm8.getEntityManagerToken)(dataSource), REQUEST],
3795
+ scope: Scope.REQUEST
3796
+ },
3797
+ (entityManager, request) => {
3798
+ if (requestWeakMap.has(request)) {
3799
+ return requestWeakMap.get(request);
3800
+ }
3801
+ return createDynamicFetcherProxy(
3802
+ entityManager,
3803
+ () => requestWeakMap.get(request) || entityManager
3804
+ );
3805
+ }
3806
+ );
3807
+ var InjectTransactionalEntityManager = createInjectFromTokenFactory(
3808
+ getTransactionalEntityManagerToken
3809
+ );
3810
+ var getTransactionalRepositoryToken = (entity, dataSource) => `Transactional${normalizeDataSourceToken(
3811
+ (0, import_typeorm8.getEntityManagerToken)(dataSource)
3812
+ )}Repository_${entity.name || entity.toString()}`;
3813
+ var getTransactionalRepositoryProvider = (entity, dataSource) => createProvider(
3814
+ {
3815
+ provide: getTransactionalRepositoryToken(entity, dataSource),
3816
+ inject: [(0, import_typeorm8.getEntityManagerToken)(dataSource), REQUEST],
3817
+ scope: Scope.REQUEST
3818
+ },
3819
+ (entityManager, req) => {
3820
+ if (requestWeakMap.has(req)) {
3821
+ const transactionalEntityManager = requestWeakMap.get(req);
3822
+ return transactionalEntityManager.getRepository(entity);
3823
+ }
3824
+ return createDynamicFetcherProxy(
3825
+ entityManager.getRepository(entity),
3826
+ () => {
3827
+ const transactionalEntityManager = requestWeakMap.get(req) || entityManager;
3828
+ return transactionalEntityManager.getRepository(entity);
3829
+ }
3830
+ );
3831
+ }
3832
+ );
3833
+ var InjectTransactionalRepository = createInjectFromTokenFactory(
3834
+ getTransactionalRepositoryToken
3835
+ );
3836
+ var TransactionalTypeOrmModule = class {
3837
+ static forFeature(entities, dataSource) {
3838
+ const entityArray = Array.isArray(entities) ? entities : [entities];
3839
+ const providers = [
3840
+ getTransactionalEntityManagerProvider(dataSource),
3841
+ ...entityArray.map(
3842
+ (entity) => getTransactionalRepositoryProvider(entity, dataSource)
3843
+ )
3844
+ ];
3845
+ const moduleImports = entityArray.length ? [import_typeorm8.TypeOrmModule.forFeature(entityArray, dataSource)] : [];
3846
+ const moduleExports = [...providers, ...moduleImports];
3847
+ return {
3848
+ module: TransactionalTypeOrmModule,
3849
+ imports: moduleImports,
3850
+ providers,
3851
+ exports: moduleExports
3852
+ };
3853
+ }
3854
+ };
3855
+ TransactionalTypeOrmModule = __decorateClass([
3856
+ Module({})
3857
+ ], TransactionalTypeOrmModule);
3101
3858
  export {
3102
3859
  BindingColumn,
3103
3860
  BindingValue,
@@ -3126,6 +3883,8 @@ export {
3126
3883
  ImportDataDto,
3127
3884
  ImportEntryBaseDto,
3128
3885
  ImportEntryDto,
3886
+ InjectTransactionalEntityManager,
3887
+ InjectTransactionalRepository,
3129
3888
  Inner,
3130
3889
  IntColumn,
3131
3890
  InternalColumn,
@@ -3173,6 +3932,8 @@ export {
3173
3932
  StringJsonColumn,
3174
3933
  TextColumn,
3175
3934
  TimeBase,
3935
+ TransactionalTypeOrmInterceptor,
3936
+ TransactionalTypeOrmModule,
3176
3937
  UuidColumn,
3177
3938
  applyQueryMatchBoolean,
3178
3939
  applyQueryMatchBooleanMySQL,
@@ -3185,6 +3946,10 @@ export {
3185
3946
  createQueryCondition,
3186
3947
  createQueryOperator,
3187
3948
  createQueryOperatorArrayify,
3188
- createQueryWrap
3949
+ createQueryWrap,
3950
+ getTransactionalEntityManagerProvider,
3951
+ getTransactionalEntityManagerToken,
3952
+ getTransactionalRepositoryProvider,
3953
+ getTransactionalRepositoryToken
3189
3954
  };
3190
3955
  //# sourceMappingURL=index.mjs.map