@nestjs-dash/wallet 0.1.1

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 (81) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +95 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/entities/transaction.entity.d.ts +18 -0
  6. package/dist/entities/transaction.entity.d.ts.map +1 -0
  7. package/dist/entities/transaction.entity.js +68 -0
  8. package/dist/entities/transaction.entity.js.map +1 -0
  9. package/dist/entities/transfer.entity.d.ts +23 -0
  10. package/dist/entities/transfer.entity.d.ts.map +1 -0
  11. package/dist/entities/transfer.entity.js +97 -0
  12. package/dist/entities/transfer.entity.js.map +1 -0
  13. package/dist/entities/wallet.entity.d.ts +16 -0
  14. package/dist/entities/wallet.entity.d.ts.map +1 -0
  15. package/dist/entities/wallet.entity.js +67 -0
  16. package/dist/entities/wallet.entity.js.map +1 -0
  17. package/dist/errors.d.ts +13 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +25 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/events/wallet-event.publisher.d.ts +12 -0
  22. package/dist/events/wallet-event.publisher.d.ts.map +1 -0
  23. package/dist/events/wallet-event.publisher.js +44 -0
  24. package/dist/events/wallet-event.publisher.js.map +1 -0
  25. package/dist/events/wallet.events.d.ts +22 -0
  26. package/dist/events/wallet.events.d.ts.map +1 -0
  27. package/dist/events/wallet.events.js +2 -0
  28. package/dist/events/wallet.events.js.map +1 -0
  29. package/dist/exchange.service.d.ts +17 -0
  30. package/dist/exchange.service.d.ts.map +1 -0
  31. package/dist/exchange.service.js +70 -0
  32. package/dist/exchange.service.js.map +1 -0
  33. package/dist/float-wallet.service.d.ts +11 -0
  34. package/dist/float-wallet.service.d.ts.map +1 -0
  35. package/dist/float-wallet.service.js +33 -0
  36. package/dist/float-wallet.service.js.map +1 -0
  37. package/dist/index.d.ts +20 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +18 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/lock/array-lock.service.d.ts +8 -0
  42. package/dist/lock/array-lock.service.d.ts.map +1 -0
  43. package/dist/lock/array-lock.service.js +60 -0
  44. package/dist/lock/array-lock.service.js.map +1 -0
  45. package/dist/lock/lock.service.d.ts +5 -0
  46. package/dist/lock/lock.service.d.ts.map +1 -0
  47. package/dist/lock/lock.service.js +4 -0
  48. package/dist/lock/lock.service.js.map +1 -0
  49. package/dist/lock/memcached-lock.service.d.ts +21 -0
  50. package/dist/lock/memcached-lock.service.d.ts.map +1 -0
  51. package/dist/lock/memcached-lock.service.js +45 -0
  52. package/dist/lock/memcached-lock.service.js.map +1 -0
  53. package/dist/lock/redis-lock.service.d.ts +13 -0
  54. package/dist/lock/redis-lock.service.d.ts.map +1 -0
  55. package/dist/lock/redis-lock.service.js +43 -0
  56. package/dist/lock/redis-lock.service.js.map +1 -0
  57. package/dist/migrations/generate.d.ts +22 -0
  58. package/dist/migrations/generate.d.ts.map +1 -0
  59. package/dist/migrations/generate.js +226 -0
  60. package/dist/migrations/generate.js.map +1 -0
  61. package/dist/tokens.d.ts +56 -0
  62. package/dist/tokens.d.ts.map +1 -0
  63. package/dist/tokens.js +13 -0
  64. package/dist/tokens.js.map +1 -0
  65. package/dist/transfer.service.d.ts +29 -0
  66. package/dist/transfer.service.d.ts.map +1 -0
  67. package/dist/transfer.service.js +154 -0
  68. package/dist/transfer.service.js.map +1 -0
  69. package/dist/wallet.module.d.ts +12 -0
  70. package/dist/wallet.module.d.ts.map +1 -0
  71. package/dist/wallet.module.js +150 -0
  72. package/dist/wallet.module.js.map +1 -0
  73. package/dist/wallet.service.d.ts +39 -0
  74. package/dist/wallet.service.d.ts.map +1 -0
  75. package/dist/wallet.service.js +230 -0
  76. package/dist/wallet.service.js.map +1 -0
  77. package/dist/warmup.service.d.ts +13 -0
  78. package/dist/warmup.service.d.ts.map +1 -0
  79. package/dist/warmup.service.js +76 -0
  80. package/dist/warmup.service.js.map +1 -0
  81. package/package.json +69 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { existsSync, mkdirSync, readdirSync, writeFileSync } from 'node:fs';
4
+ import { join, resolve } from 'node:path';
5
+ import { pathToFileURL } from 'node:url';
6
+ import { generateMigrationFiles, listMigrationSpecs, resolveTables, } from './migrations/generate.js';
7
+ const program = new Command();
8
+ program.name('nestjs-dash-wallet').description('NestJS Dash wallet CLI').version('0.1.0');
9
+ function parseTables(input) {
10
+ if (!input)
11
+ return {};
12
+ const out = {};
13
+ for (const part of input.split(',')) {
14
+ const [key, value] = part.split('=').map((s) => s.trim());
15
+ if (key === 'wallets' || key === 'transactions' || key === 'transfers') {
16
+ out[key] = value;
17
+ }
18
+ }
19
+ return out;
20
+ }
21
+ program
22
+ .command('migration:publish')
23
+ .description('Publish TypeORM wallet migrations into the consumer project')
24
+ .option('-p, --path <dir>', 'output directory', './src/migrations/wallet')
25
+ .option('--tables <map>', 'table overrides wallets=...,transactions=...,transfers=...')
26
+ .option('--with-uuid', 'also publish morph-id UUID migration', false)
27
+ .option('--force', 'overwrite existing files with same suffix', false)
28
+ .action((opts) => {
29
+ const cwd = process.cwd();
30
+ const outDir = resolve(cwd, opts.path);
31
+ mkdirSync(outDir, { recursive: true });
32
+ const tables = resolveTables(parseTables(opts.tables));
33
+ const files = generateMigrationFiles(tables, !!opts.withUuid);
34
+ const existing = existsSync(outDir) ? readdirSync(outDir) : [];
35
+ for (const file of files) {
36
+ const suffix = file.fileName.replace(/^\d+-/, '');
37
+ const already = existing.find((f) => f.endsWith(`-${suffix}`) || f === file.fileName);
38
+ if (already && !opts.force) {
39
+ console.log(`skip ${already} (exists)`);
40
+ continue;
41
+ }
42
+ const targetName = opts.force && already ? already : file.fileName;
43
+ const target = join(outDir, targetName);
44
+ writeFileSync(target, file.contents, 'utf8');
45
+ console.log(`wrote ${targetName}`);
46
+ }
47
+ });
48
+ program
49
+ .command('migration:list')
50
+ .description('List wallet migrations that would be published')
51
+ .option('-p, --path <dir>', 'output directory', './src/migrations/wallet')
52
+ .option('--with-uuid', 'include uuid morph migration', false)
53
+ .action((opts) => {
54
+ const outDir = resolve(process.cwd(), opts.path);
55
+ const existing = existsSync(outDir) ? readdirSync(outDir) : [];
56
+ for (const spec of listMigrationSpecs(!!opts.withUuid)) {
57
+ const found = existing.find((f) => f.includes(spec.fileSuffix));
58
+ console.log(`${found ? 'present' : 'missing'}\t${spec.key}${found ? `\t${found}` : ''}`);
59
+ }
60
+ });
61
+ program
62
+ .command('warmup')
63
+ .description('Recompute wallet balance(s) from confirmed transactions')
64
+ .requiredOption('--data-source <path>', 'path to TypeORM DataSource module exporting default DataSource')
65
+ .option('--wallet-id <id>', 'warmup a single wallet id')
66
+ .action(async (opts) => {
67
+ const mod = await import(pathToFileURL(resolve(process.cwd(), opts.dataSource)).href);
68
+ const ds = mod.default;
69
+ if (!ds?.initialize) {
70
+ throw new Error('DataSource default export with initialize() is required');
71
+ }
72
+ if (!ds.isInitialized)
73
+ await ds.initialize();
74
+ const walletId = opts.walletId ? Number(opts.walletId) : null;
75
+ if (walletId) {
76
+ await ds.query(`UPDATE wallets w
77
+ SET balance = (
78
+ SELECT COALESCE(SUM(CASE WHEN type='deposit' THEN amount ELSE -amount END), 0)
79
+ FROM transactions t WHERE t.wallet_id = w.id AND t.confirmed = 1
80
+ )
81
+ WHERE w.id = ?`, [walletId]);
82
+ console.log(`warmed wallet ${walletId}`);
83
+ }
84
+ else {
85
+ await ds.query(`UPDATE wallets w
86
+ SET balance = (
87
+ SELECT COALESCE(SUM(CASE WHEN type='deposit' THEN amount ELSE -amount END), 0)
88
+ FROM transactions t WHERE t.wallet_id = w.id AND t.confirmed = 1
89
+ )`);
90
+ console.log('warmed all wallets');
91
+ }
92
+ await ds.destroy();
93
+ });
94
+ program.parse();
95
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,GAEhB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE1F,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAiC,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACvE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,yBAAyB,CAAC;KACzE,MAAM,CAAC,gBAAgB,EAAE,4DAA4D,CAAC;KACtF,MAAM,CAAC,aAAa,EAAE,sCAAsC,EAAE,KAAK,CAAC;KACpE,MAAM,CAAC,SAAS,EAAE,2CAA2C,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,CAAC,IAA4E,EAAE,EAAE;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,WAAW,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,yBAAyB,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,8BAA8B,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,CAAC,IAA0C,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yDAAyD,CAAC;KACtE,cAAc,CACb,sBAAsB,EACtB,gEAAgE,CACjE;KACA,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAA+C,EAAE,EAAE;IAChE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,aAAa;QAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;wBAKgB,EAChB,CAAC,QAAQ,CAAC,CACX,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,KAAK,CACZ;;;;WAIG,CACJ,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { BaseEntity, type Relation } from 'typeorm';
2
+ import { WalletEntity } from './wallet.entity.js';
3
+ export type TransactionType = 'deposit' | 'withdraw';
4
+ export declare class TransactionEntity extends BaseEntity {
5
+ id: number;
6
+ payableType: string;
7
+ payableId: string;
8
+ walletId: number;
9
+ wallet?: Relation<WalletEntity>;
10
+ type: TransactionType;
11
+ amount: string;
12
+ confirmed: boolean;
13
+ meta: Record<string, unknown> | null;
14
+ uuid: string;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+ //# sourceMappingURL=transaction.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.entity.d.ts","sourceRoot":"","sources":["../../src/entities/transaction.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAQV,KAAK,QAAQ,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAErD,qBAEa,iBAAkB,SAAQ,UAAU;IAE/C,EAAE,EAAG,MAAM,CAAC;IAGZ,WAAW,EAAG,MAAM,CAAC;IAGrB,SAAS,EAAG,MAAM,CAAC;IAGnB,QAAQ,EAAG,MAAM,CAAC;IAIlB,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAGhC,IAAI,EAAG,eAAe,CAAC;IAGvB,MAAM,EAAG,MAAM,CAAC;IAGhB,SAAS,EAAG,OAAO,CAAC;IAGpB,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAGtC,IAAI,EAAG,MAAM,CAAC;IAGd,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
@@ -0,0 +1,68 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { BaseEntity, Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm';
11
+ import { WalletEntity } from './wallet.entity.js';
12
+ let TransactionEntity = class TransactionEntity extends BaseEntity {
13
+ };
14
+ __decorate([
15
+ PrimaryGeneratedColumn({ type: 'bigint' }),
16
+ __metadata("design:type", Number)
17
+ ], TransactionEntity.prototype, "id", void 0);
18
+ __decorate([
19
+ Column({ name: 'payable_type', type: 'varchar', length: 255 }),
20
+ __metadata("design:type", String)
21
+ ], TransactionEntity.prototype, "payableType", void 0);
22
+ __decorate([
23
+ Column({ name: 'payable_id', type: 'varchar', length: 36 }),
24
+ __metadata("design:type", String)
25
+ ], TransactionEntity.prototype, "payableId", void 0);
26
+ __decorate([
27
+ Column({ name: 'wallet_id', type: 'bigint' }),
28
+ __metadata("design:type", Number)
29
+ ], TransactionEntity.prototype, "walletId", void 0);
30
+ __decorate([
31
+ ManyToOne(() => WalletEntity),
32
+ JoinColumn({ name: 'wallet_id' }),
33
+ __metadata("design:type", Object)
34
+ ], TransactionEntity.prototype, "wallet", void 0);
35
+ __decorate([
36
+ Column({ type: 'enum', enum: ['deposit', 'withdraw'] }),
37
+ __metadata("design:type", String)
38
+ ], TransactionEntity.prototype, "type", void 0);
39
+ __decorate([
40
+ Column({ type: 'decimal', precision: 64, scale: 0 }),
41
+ __metadata("design:type", String)
42
+ ], TransactionEntity.prototype, "amount", void 0);
43
+ __decorate([
44
+ Column({ type: 'boolean', default: true }),
45
+ __metadata("design:type", Boolean)
46
+ ], TransactionEntity.prototype, "confirmed", void 0);
47
+ __decorate([
48
+ Column({ type: 'json', nullable: true }),
49
+ __metadata("design:type", Object)
50
+ ], TransactionEntity.prototype, "meta", void 0);
51
+ __decorate([
52
+ Column({ type: 'char', length: 36, unique: true }),
53
+ __metadata("design:type", String)
54
+ ], TransactionEntity.prototype, "uuid", void 0);
55
+ __decorate([
56
+ CreateDateColumn({ name: 'created_at' }),
57
+ __metadata("design:type", Date)
58
+ ], TransactionEntity.prototype, "createdAt", void 0);
59
+ __decorate([
60
+ UpdateDateColumn({ name: 'updated_at' }),
61
+ __metadata("design:type", Date)
62
+ ], TransactionEntity.prototype, "updatedAt", void 0);
63
+ TransactionEntity = __decorate([
64
+ Entity('transactions'),
65
+ Index(['payableType', 'payableId'])
66
+ ], TransactionEntity);
67
+ export { TransactionEntity };
68
+ //# sourceMappingURL=transaction.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.entity.js","sourceRoot":"","sources":["../../src/entities/transaction.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,EACT,sBAAsB,EAEtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM3C,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;CAqChD,CAAA;AAnCC;IADC,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;6CAC/B;AAGZ;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;sDAC1C;AAGrB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;oDACzC;AAGnB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;mDAC5B;AAIlB;IAFC,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;;iDACF;AAGhC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;;+CACjC;AAGvB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;iDACrC;AAGhB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oDACvB;AAGpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACH;AAGtC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;+CACrC;AAGd;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;oDAAC;AAGjB;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;oDAAC;AApCN,iBAAiB;IAF7B,MAAM,CAAC,cAAc,CAAC;IACtB,KAAK,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;GACvB,iBAAiB,CAqC7B"}
@@ -0,0 +1,23 @@
1
+ import { BaseEntity, type Relation } from 'typeorm';
2
+ import { TransactionEntity } from './transaction.entity.js';
3
+ export type TransferStatus = 'exchange' | 'transfer' | 'paid' | 'refund' | 'gift';
4
+ export declare class TransferEntity extends BaseEntity {
5
+ id: number;
6
+ fromType: string;
7
+ fromId: string;
8
+ toType: string;
9
+ toId: string;
10
+ status: TransferStatus;
11
+ statusLast: TransferStatus | null;
12
+ depositId: number;
13
+ deposit?: Relation<TransactionEntity>;
14
+ withdrawId: number;
15
+ withdraw?: Relation<TransactionEntity>;
16
+ discount: string;
17
+ fee: string;
18
+ extra: Record<string, unknown> | null;
19
+ uuid: string;
20
+ createdAt: Date;
21
+ updatedAt: Date;
22
+ }
23
+ //# sourceMappingURL=transfer.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.entity.d.ts","sourceRoot":"","sources":["../../src/entities/transfer.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAOV,KAAK,QAAQ,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElF,qBACa,cAAe,SAAQ,UAAU;IAE5C,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAG,MAAM,CAAC;IAGlB,MAAM,EAAG,MAAM,CAAC;IAGhB,MAAM,EAAG,MAAM,CAAC;IAGhB,IAAI,EAAG,MAAM,CAAC;IAOd,MAAM,EAAG,cAAc,CAAC;IAQxB,UAAU,EAAG,cAAc,GAAG,IAAI,CAAC;IAGnC,SAAS,EAAG,MAAM,CAAC;IAInB,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAGtC,UAAU,EAAG,MAAM,CAAC;IAIpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAGvC,QAAQ,EAAG,MAAM,CAAC;IAGlB,GAAG,EAAG,MAAM,CAAC;IAGb,KAAK,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAGvC,IAAI,EAAG,MAAM,CAAC;IAGd,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
@@ -0,0 +1,97 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { BaseEntity, Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm';
11
+ import { TransactionEntity } from './transaction.entity.js';
12
+ let TransferEntity = class TransferEntity extends BaseEntity {
13
+ };
14
+ __decorate([
15
+ PrimaryGeneratedColumn({ type: 'bigint' }),
16
+ __metadata("design:type", Number)
17
+ ], TransferEntity.prototype, "id", void 0);
18
+ __decorate([
19
+ Column({ name: 'from_type', type: 'varchar', length: 255 }),
20
+ __metadata("design:type", String)
21
+ ], TransferEntity.prototype, "fromType", void 0);
22
+ __decorate([
23
+ Column({ name: 'from_id', type: 'varchar', length: 36 }),
24
+ __metadata("design:type", String)
25
+ ], TransferEntity.prototype, "fromId", void 0);
26
+ __decorate([
27
+ Column({ name: 'to_type', type: 'varchar', length: 255 }),
28
+ __metadata("design:type", String)
29
+ ], TransferEntity.prototype, "toType", void 0);
30
+ __decorate([
31
+ Column({ name: 'to_id', type: 'varchar', length: 36 }),
32
+ __metadata("design:type", String)
33
+ ], TransferEntity.prototype, "toId", void 0);
34
+ __decorate([
35
+ Column({
36
+ type: 'enum',
37
+ enum: ['exchange', 'transfer', 'paid', 'refund', 'gift'],
38
+ default: 'transfer',
39
+ }),
40
+ __metadata("design:type", String)
41
+ ], TransferEntity.prototype, "status", void 0);
42
+ __decorate([
43
+ Column({
44
+ name: 'status_last',
45
+ type: 'enum',
46
+ enum: ['exchange', 'transfer', 'paid', 'refund', 'gift'],
47
+ nullable: true,
48
+ }),
49
+ __metadata("design:type", Object)
50
+ ], TransferEntity.prototype, "statusLast", void 0);
51
+ __decorate([
52
+ Column({ name: 'deposit_id', type: 'bigint' }),
53
+ __metadata("design:type", Number)
54
+ ], TransferEntity.prototype, "depositId", void 0);
55
+ __decorate([
56
+ ManyToOne(() => TransactionEntity),
57
+ JoinColumn({ name: 'deposit_id' }),
58
+ __metadata("design:type", Object)
59
+ ], TransferEntity.prototype, "deposit", void 0);
60
+ __decorate([
61
+ Column({ name: 'withdraw_id', type: 'bigint' }),
62
+ __metadata("design:type", Number)
63
+ ], TransferEntity.prototype, "withdrawId", void 0);
64
+ __decorate([
65
+ ManyToOne(() => TransactionEntity),
66
+ JoinColumn({ name: 'withdraw_id' }),
67
+ __metadata("design:type", Object)
68
+ ], TransferEntity.prototype, "withdraw", void 0);
69
+ __decorate([
70
+ Column({ type: 'decimal', precision: 64, scale: 0, default: 0 }),
71
+ __metadata("design:type", String)
72
+ ], TransferEntity.prototype, "discount", void 0);
73
+ __decorate([
74
+ Column({ type: 'decimal', precision: 64, scale: 0, default: 0 }),
75
+ __metadata("design:type", String)
76
+ ], TransferEntity.prototype, "fee", void 0);
77
+ __decorate([
78
+ Column({ type: 'json', nullable: true }),
79
+ __metadata("design:type", Object)
80
+ ], TransferEntity.prototype, "extra", void 0);
81
+ __decorate([
82
+ Column({ type: 'char', length: 36, unique: true }),
83
+ __metadata("design:type", String)
84
+ ], TransferEntity.prototype, "uuid", void 0);
85
+ __decorate([
86
+ CreateDateColumn({ name: 'created_at' }),
87
+ __metadata("design:type", Date)
88
+ ], TransferEntity.prototype, "createdAt", void 0);
89
+ __decorate([
90
+ UpdateDateColumn({ name: 'updated_at' }),
91
+ __metadata("design:type", Date)
92
+ ], TransferEntity.prototype, "updatedAt", void 0);
93
+ TransferEntity = __decorate([
94
+ Entity('transfers')
95
+ ], TransferEntity);
96
+ export { TransferEntity };
97
+ //# sourceMappingURL=transfer.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.entity.js","sourceRoot":"","sources":["../../src/entities/transfer.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,SAAS,EACT,sBAAsB,EAEtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKrD,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;CA8D7C,CAAA;AA5DC;IADC,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;0CAC/B;AAGZ;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;gDAC1C;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;8CACzC;AAGhB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;8CAC1C;AAGhB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;4CACzC;AAOd;IALC,MAAM,CAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QACxD,OAAO,EAAE,UAAU;KACpB,CAAC;;8CACsB;AAQxB;IANC,MAAM,CAAC;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QACxD,QAAQ,EAAE,IAAI;KACf,CAAC;;kDACiC;AAGnC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;iDAC5B;AAInB;IAFC,SAAS,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;+CACG;AAGtC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;kDAC5B;AAIpB;IAFC,SAAS,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;gDACG;AAGvC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gDAC/C;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;2CACpD;AAGb;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACF;AAGvC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;4CACrC;AAGd;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;iDAAC;AAGjB;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;iDAAC;AA7DN,cAAc;IAD1B,MAAM,CAAC,WAAW,CAAC;GACP,cAAc,CA8D1B"}
@@ -0,0 +1,16 @@
1
+ import { BaseEntity } from 'typeorm';
2
+ export declare class WalletEntity extends BaseEntity {
3
+ id: number;
4
+ holderType: string;
5
+ holderId: string;
6
+ name: string;
7
+ slug: string;
8
+ uuid: string;
9
+ description: string | null;
10
+ meta: Record<string, unknown> | null;
11
+ balance: string;
12
+ decimalPlaces: number;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
16
+ //# sourceMappingURL=wallet.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.entity.d.ts","sourceRoot":"","sources":["../../src/entities/wallet.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAOX,MAAM,SAAS,CAAC;AAEjB,qBAEa,YAAa,SAAQ,UAAU;IAE1C,EAAE,EAAG,MAAM,CAAC;IAGZ,UAAU,EAAG,MAAM,CAAC;IAGpB,QAAQ,EAAG,MAAM,CAAC;IAGlB,IAAI,EAAG,MAAM,CAAC;IAId,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAG,MAAM,CAAC;IAGd,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAG5B,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAGtC,OAAO,EAAG,MAAM,CAAC;IAGjB,aAAa,EAAG,MAAM,CAAC;IAGvB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
@@ -0,0 +1,67 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { BaseEntity, Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm';
11
+ let WalletEntity = class WalletEntity extends BaseEntity {
12
+ };
13
+ __decorate([
14
+ PrimaryGeneratedColumn({ type: 'bigint' }),
15
+ __metadata("design:type", Number)
16
+ ], WalletEntity.prototype, "id", void 0);
17
+ __decorate([
18
+ Column({ name: 'holder_type', type: 'varchar', length: 255 }),
19
+ __metadata("design:type", String)
20
+ ], WalletEntity.prototype, "holderType", void 0);
21
+ __decorate([
22
+ Column({ name: 'holder_id', type: 'varchar', length: 36 }),
23
+ __metadata("design:type", String)
24
+ ], WalletEntity.prototype, "holderId", void 0);
25
+ __decorate([
26
+ Column({ type: 'varchar', length: 255 }),
27
+ __metadata("design:type", String)
28
+ ], WalletEntity.prototype, "name", void 0);
29
+ __decorate([
30
+ Index(),
31
+ Column({ type: 'varchar', length: 255 }),
32
+ __metadata("design:type", String)
33
+ ], WalletEntity.prototype, "slug", void 0);
34
+ __decorate([
35
+ Column({ type: 'char', length: 36, unique: true }),
36
+ __metadata("design:type", String)
37
+ ], WalletEntity.prototype, "uuid", void 0);
38
+ __decorate([
39
+ Column({ type: 'varchar', length: 255, nullable: true }),
40
+ __metadata("design:type", Object)
41
+ ], WalletEntity.prototype, "description", void 0);
42
+ __decorate([
43
+ Column({ type: 'json', nullable: true }),
44
+ __metadata("design:type", Object)
45
+ ], WalletEntity.prototype, "meta", void 0);
46
+ __decorate([
47
+ Column({ type: 'decimal', precision: 64, scale: 0, default: 0 }),
48
+ __metadata("design:type", String)
49
+ ], WalletEntity.prototype, "balance", void 0);
50
+ __decorate([
51
+ Column({ name: 'decimal_places', type: 'smallint', unsigned: true, default: 2 }),
52
+ __metadata("design:type", Number)
53
+ ], WalletEntity.prototype, "decimalPlaces", void 0);
54
+ __decorate([
55
+ CreateDateColumn({ name: 'created_at' }),
56
+ __metadata("design:type", Date)
57
+ ], WalletEntity.prototype, "createdAt", void 0);
58
+ __decorate([
59
+ UpdateDateColumn({ name: 'updated_at' }),
60
+ __metadata("design:type", Date)
61
+ ], WalletEntity.prototype, "updatedAt", void 0);
62
+ WalletEntity = __decorate([
63
+ Entity('wallets'),
64
+ Index(['holderType', 'holderId', 'slug'], { unique: true })
65
+ ], WalletEntity);
66
+ export { WalletEntity };
67
+ //# sourceMappingURL=wallet.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.entity.js","sourceRoot":"","sources":["../../src/entities/wallet.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAIV,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;CAqC3C,CAAA;AAnCC;IADC,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;wCAC/B;AAGZ;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;gDAC1C;AAGpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;8CACzC;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CAC3B;AAId;IAFC,KAAK,EAAE;IACP,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CAC3B;AAGd;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;0CACrC;AAGd;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAC7B;AAG5B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACH;AAGtC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;6CAChD;AAGjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mDAC1D;AAGvB;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;+CAAC;AAGjB;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;+CAAC;AApCN,YAAY;IAFxB,MAAM,CAAC,SAAS,CAAC;IACjB,KAAK,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GAC/C,YAAY,CAqCxB"}
@@ -0,0 +1,13 @@
1
+ export declare class InsufficientFundsError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ export declare class WalletNotFoundError extends Error {
5
+ constructor(message?: string);
6
+ }
7
+ export declare class WalletLockTimeoutError extends Error {
8
+ constructor(message?: string);
9
+ }
10
+ export declare class ExchangeRateNotFoundError extends Error {
11
+ constructor(message?: string);
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAAuB;CAI3C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAqB;CAIzC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAAkC;CAItD;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,SAA4B;CAIhD"}
package/dist/errors.js ADDED
@@ -0,0 +1,25 @@
1
+ export class InsufficientFundsError extends Error {
2
+ constructor(message = 'Insufficient funds') {
3
+ super(message);
4
+ this.name = 'InsufficientFundsError';
5
+ }
6
+ }
7
+ export class WalletNotFoundError extends Error {
8
+ constructor(message = 'Wallet not found') {
9
+ super(message);
10
+ this.name = 'WalletNotFoundError';
11
+ }
12
+ }
13
+ export class WalletLockTimeoutError extends Error {
14
+ constructor(message = 'Failed to acquire wallet lock') {
15
+ super(message);
16
+ this.name = 'WalletLockTimeoutError';
17
+ }
18
+ }
19
+ export class ExchangeRateNotFoundError extends Error {
20
+ constructor(message = 'Exchange rate not found') {
21
+ super(message);
22
+ this.name = 'ExchangeRateNotFoundError';
23
+ }
24
+ }
25
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAO,GAAG,oBAAoB;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,GAAG,kBAAkB;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAO,GAAG,+BAA+B;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { EventEmitter2 } from '@nestjs/event-emitter';
2
+ import { type WalletModuleOptions } from '../tokens.js';
3
+ import type { BalanceUpdatedEventPayload, TransactionCreatedEventPayload, WalletCreatedEventPayload } from './wallet.events.js';
4
+ export declare class WalletEventPublisher {
5
+ private readonly emitter?;
6
+ private readonly enabled;
7
+ constructor(options: WalletModuleOptions, emitter?: EventEmitter2 | undefined);
8
+ walletCreated(payload: WalletCreatedEventPayload): void;
9
+ transactionCreated(payload: TransactionCreatedEventPayload): void;
10
+ balanceUpdated(payload: BalanceUpdatedEventPayload): void;
11
+ }
12
+ //# sourceMappingURL=wallet-event.publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-event.publisher.d.ts","sourceRoot":"","sources":["../../src/events/wallet-event.publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAgC,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EACV,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,qBACa,oBAAoB;IAKjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAJvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGR,OAAO,EAAE,mBAAmB,EACvB,OAAO,CAAC,EAAE,aAAa,YAAA;IAKtD,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAKvD,kBAAkB,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI;IAKjE,cAAc,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAI1D"}
@@ -0,0 +1,44 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Inject, Injectable, Optional } from '@nestjs/common';
14
+ import { EventEmitter2 } from '@nestjs/event-emitter';
15
+ import { WALLET_EVENT, WALLET_OPTIONS } from '../tokens.js';
16
+ let WalletEventPublisher = class WalletEventPublisher {
17
+ constructor(options, emitter) {
18
+ this.emitter = emitter;
19
+ this.enabled = options.events?.enabled !== false && !!this.emitter;
20
+ }
21
+ walletCreated(payload) {
22
+ if (!this.enabled)
23
+ return;
24
+ this.emitter.emit(WALLET_EVENT.WALLET_CREATED, payload);
25
+ }
26
+ transactionCreated(payload) {
27
+ if (!this.enabled)
28
+ return;
29
+ this.emitter.emit(WALLET_EVENT.TRANSACTION_CREATED, payload);
30
+ }
31
+ balanceUpdated(payload) {
32
+ if (!this.enabled)
33
+ return;
34
+ this.emitter.emit(WALLET_EVENT.BALANCE_UPDATED, payload);
35
+ }
36
+ };
37
+ WalletEventPublisher = __decorate([
38
+ Injectable(),
39
+ __param(0, Inject(WALLET_OPTIONS)),
40
+ __param(1, Optional()),
41
+ __metadata("design:paramtypes", [Object, EventEmitter2])
42
+ ], WalletEventPublisher);
43
+ export { WalletEventPublisher };
44
+ //# sourceMappingURL=wallet-event.publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-event.publisher.js","sourceRoot":"","sources":["../../src/events/wallet-event.publisher.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,cAAc,EAA4B,MAAM,cAAc,CAAC;AAQ/E,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG/B,YAC0B,OAA4B,EACvB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAEpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACrE,CAAC;IAED,aAAa,CAAC,OAAkC;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,kBAAkB,CAAC,OAAuC;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,cAAc,CAAC,OAAmC;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AAxBY,oBAAoB;IADhC,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;IACtB,WAAA,QAAQ,EAAE,CAAA;6CAA4B,aAAa;GAL3C,oBAAoB,CAwBhC"}
@@ -0,0 +1,22 @@
1
+ export interface WalletCreatedEventPayload {
2
+ walletId: number;
3
+ holderType: string;
4
+ holderId: string;
5
+ slug: string;
6
+ uuid: string;
7
+ }
8
+ export interface TransactionCreatedEventPayload {
9
+ transactionId: number;
10
+ walletId: number;
11
+ type: 'deposit' | 'withdraw';
12
+ amount: string;
13
+ uuid: string;
14
+ }
15
+ export interface BalanceUpdatedEventPayload {
16
+ walletId: number;
17
+ holderType: string;
18
+ holderId: string;
19
+ balance: string;
20
+ oldBalance: string;
21
+ }
22
+ //# sourceMappingURL=wallet.events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.events.d.ts","sourceRoot":"","sources":["../../src/events/wallet.events.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wallet.events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.events.js","sourceRoot":"","sources":["../../src/events/wallet.events.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { TransferEntity } from './entities/transfer.entity.js';
2
+ import type { WalletEntity } from './entities/wallet.entity.js';
3
+ import { type WalletModuleOptions } from './tokens.js';
4
+ import { TransferService } from './transfer.service.js';
5
+ import { WalletService } from './wallet.service.js';
6
+ export declare class ExchangeService {
7
+ private readonly transfers;
8
+ private readonly wallets;
9
+ private rates;
10
+ constructor(transfers: TransferService, wallets: WalletService, options: WalletModuleOptions);
11
+ setExchangeRate(fromCurrency: string, toCurrency: string, rate: number): void;
12
+ getExchangeRate(fromCurrency: string, toCurrency: string): number;
13
+ private currencyOf;
14
+ exchange(from: WalletEntity, to: WalletEntity, amount: number | string, explicitRate?: number): Promise<TransferEntity>;
15
+ exchangeFloat(from: WalletEntity, to: WalletEntity, amount: number, explicitRate?: number): Promise<TransferEntity>;
16
+ }
17
+ //# sourceMappingURL=exchange.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.service.d.ts","sourceRoot":"","sources":["../src/exchange.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,KAAK,CAAyC;gBAGnC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,aAAa,EACf,OAAO,EAAE,mBAAmB;IAKtD,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAK7E,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IASjE,OAAO,CAAC,UAAU;IASZ,QAAQ,CACZ,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC;IAcpB,aAAa,CACjB,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC;CAI3B"}