@bsv/overlay 0.1.8 → 0.1.9

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 (80) hide show
  1. package/dist/cjs/package.json +2 -2
  2. package/dist/cjs/src/Engine.js +152 -492
  3. package/dist/cjs/src/Engine.js.map +1 -1
  4. package/dist/cjs/src/GASP/OverlayGASPRemote.js +6 -4
  5. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  6. package/dist/cjs/src/GASP/OverlayGASPStorage.js +152 -77
  7. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  8. package/dist/cjs/src/storage/knex/KnexStorage.js +106 -38
  9. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  10. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  11. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  12. package/dist/cjs/src/storage/knex/migrations/2024-07-17-001-transactions.js +39 -0
  13. package/dist/cjs/src/storage/knex/migrations/2024-07-17-001-transactions.js.map +1 -0
  14. package/dist/cjs/src/storage/knex/migrations/2024-07-18-001-indexes.js +34 -0
  15. package/dist/cjs/src/storage/knex/migrations/2024-07-18-001-indexes.js.map +1 -0
  16. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  17. package/dist/esm/src/Engine.js +150 -491
  18. package/dist/esm/src/Engine.js.map +1 -1
  19. package/dist/esm/src/GASP/OverlayGASPRemote.js +7 -4
  20. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  21. package/dist/esm/src/GASP/OverlayGASPStorage.js +151 -77
  22. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  23. package/dist/esm/src/storage/knex/KnexStorage.js +106 -38
  24. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  25. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  26. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  27. package/dist/esm/src/storage/knex/migrations/2024-07-17-001-transactions.js +34 -0
  28. package/dist/esm/src/storage/knex/migrations/2024-07-17-001-transactions.js.map +1 -0
  29. package/dist/esm/src/storage/knex/migrations/2024-07-18-001-indexes.js +29 -0
  30. package/dist/esm/src/storage/knex/migrations/2024-07-18-001-indexes.js.map +1 -0
  31. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  32. package/dist/types/src/Engine.d.ts +8 -115
  33. package/dist/types/src/Engine.d.ts.map +1 -1
  34. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +3 -2
  35. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  36. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +29 -3
  37. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  38. package/dist/types/src/Output.d.ts +2 -2
  39. package/dist/types/src/Output.d.ts.map +1 -1
  40. package/dist/types/src/storage/Storage.d.ts +6 -8
  41. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  42. package/dist/types/src/storage/knex/KnexStorage.d.ts +4 -4
  43. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  44. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  45. package/dist/types/src/storage/knex/migrations/2024-07-17-001-transactions.d.ts +4 -0
  46. package/dist/types/src/storage/knex/migrations/2024-07-17-001-transactions.d.ts.map +1 -0
  47. package/dist/types/src/storage/knex/migrations/2024-07-18-001-indexes.d.ts +4 -0
  48. package/dist/types/src/storage/knex/migrations/2024-07-18-001-indexes.d.ts.map +1 -0
  49. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  50. package/package.json +2 -2
  51. package/src/Engine.ts +158 -550
  52. package/src/GASP/OverlayGASPRemote.ts +107 -0
  53. package/src/GASP/OverlayGASPStorage.ts +331 -0
  54. package/src/Output.ts +2 -2
  55. package/src/__tests/Engine.test.ts +27 -26
  56. package/src/__tests/OverlayGASPRemote.test.ts +1 -1
  57. package/src/__tests/OverlayGASPStorage.test.ts +4 -3
  58. package/src/storage/Storage.ts +6 -8
  59. package/src/storage/knex/KnexStorage.ts +119 -41
  60. package/src/storage/knex/all-migrations.ts +10 -6
  61. package/src/storage/knex/migrations/2024-07-17-001-transactions.ts +40 -0
  62. package/src/storage/knex/migrations/2024-07-18-001-indexes.ts +30 -0
  63. package/dist/cjs/src/GASP.js +0 -275
  64. package/dist/cjs/src/GASP.js.map +0 -1
  65. package/dist/cjs/src/SHIPAdvertisement.js +0 -3
  66. package/dist/cjs/src/SHIPAdvertisement.js.map +0 -1
  67. package/dist/cjs/src/SLAPAdvertisement.js +0 -3
  68. package/dist/cjs/src/SLAPAdvertisement.js.map +0 -1
  69. package/dist/esm/src/GASP.js +0 -279
  70. package/dist/esm/src/GASP.js.map +0 -1
  71. package/dist/esm/src/SHIPAdvertisement.js +0 -2
  72. package/dist/esm/src/SHIPAdvertisement.js.map +0 -1
  73. package/dist/esm/src/SLAPAdvertisement.js +0 -2
  74. package/dist/esm/src/SLAPAdvertisement.js.map +0 -1
  75. package/dist/types/src/GASP.d.ts +0 -215
  76. package/dist/types/src/GASP.d.ts.map +0 -1
  77. package/dist/types/src/SHIPAdvertisement.d.ts +0 -9
  78. package/dist/types/src/SHIPAdvertisement.d.ts.map +0 -1
  79. package/dist/types/src/SLAPAdvertisement.d.ts +0 -9
  80. package/dist/types/src/SLAPAdvertisement.d.ts.map +0 -1
@@ -5,77 +5,147 @@ class KnexStorage {
5
5
  constructor(knex) {
6
6
  this.knex = knex;
7
7
  }
8
- async findOutput(txid, outputIndex, topic, spent) {
8
+ async findOutput(txid, outputIndex, topic, spent, includeBEEF = false) {
9
9
  const search = {
10
- txid,
11
- outputIndex
10
+ 'outputs.txid': txid,
11
+ 'outputs.outputIndex': outputIndex
12
12
  };
13
13
  if (topic !== undefined)
14
- search.topic = topic;
14
+ search['outputs.topic'] = topic;
15
15
  if (spent !== undefined)
16
- search.spent = spent;
17
- const [output] = await this.knex('outputs').where(search).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
16
+ search['outputs.spent'] = spent;
17
+ // Base query to get the output
18
+ const query = this.knex('outputs').where(search);
19
+ // Select necessary fields from outputs and conditionally include beef from transactions
20
+ const selectFields = [
21
+ 'outputs.txid',
22
+ 'outputs.outputIndex',
23
+ 'outputs.outputScript',
24
+ 'outputs.topic',
25
+ 'outputs.satoshis',
26
+ 'outputs.outputsConsumed',
27
+ 'outputs.spent',
28
+ 'outputs.consumedBy'
29
+ ];
30
+ if (includeBEEF) {
31
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
32
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
33
+ selectFields.push('transactions.beef');
34
+ }
35
+ const output = await query.select(selectFields).first();
18
36
  if (output === undefined || output === null) {
19
37
  return null;
20
38
  }
21
39
  return {
22
40
  ...output,
23
41
  outputScript: [...output.outputScript],
24
- beef: [...output.beef],
42
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
25
43
  spent: Boolean(output.spent),
26
44
  outputsConsumed: JSON.parse(output.outputsConsumed),
27
45
  consumedBy: JSON.parse(output.consumedBy)
28
46
  };
29
47
  }
30
- async findOutputsForTransaction(txid) {
31
- const outputs = await this.knex('outputs').where({ txid }).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
48
+ async findOutputsForTransaction(txid, includeBEEF = false) {
49
+ // Base query to get outputs
50
+ const query = this.knex('outputs').where({ 'outputs.txid': txid });
51
+ // Select necessary fields from outputs and conditionally include beef from transactions
52
+ const selectFields = [
53
+ 'outputs.txid',
54
+ 'outputs.outputIndex',
55
+ 'outputs.outputScript',
56
+ 'outputs.topic',
57
+ 'outputs.satoshis',
58
+ 'outputs.outputsConsumed',
59
+ 'outputs.spent',
60
+ 'outputs.consumedBy'
61
+ ];
62
+ if (includeBEEF) {
63
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
64
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
65
+ selectFields.push('transactions.beef');
66
+ }
67
+ const outputs = await query.select(selectFields);
32
68
  if (outputs === undefined || outputs.length === 0) {
33
69
  return [];
34
70
  }
35
71
  return outputs.map(output => ({
36
72
  ...output,
37
73
  outputScript: [...output.outputScript],
38
- beef: [...output.beef],
74
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
39
75
  spent: Boolean(output.spent),
40
76
  outputsConsumed: JSON.parse(output.outputsConsumed),
41
77
  consumedBy: JSON.parse(output.consumedBy)
42
78
  }));
43
79
  }
44
- async findUTXOsForTopic(topic, since) {
45
- const query = this.knex('outputs').where({ topic, spent: false });
80
+ async findUTXOsForTopic(topic, since, includeBEEF = false) {
81
+ // Base query to get outputs
82
+ const query = this.knex('outputs').where({ 'outputs.topic': topic, 'outputs.spent': false });
46
83
  // If provided, additionally filters UTXOs by block height
47
84
  if (since !== undefined && since > 0) {
48
- await query.andWhere('blockHeight', '>=', since);
85
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
86
+ query.andWhere('outputs.blockHeight', '>=', since);
87
+ }
88
+ // Select necessary fields from outputs and conditionally include beef from transactions
89
+ const selectFields = [
90
+ 'outputs.txid',
91
+ 'outputs.outputIndex',
92
+ 'outputs.outputScript',
93
+ 'outputs.topic',
94
+ 'outputs.satoshis',
95
+ 'outputs.outputsConsumed',
96
+ 'outputs.spent',
97
+ 'outputs.consumedBy'
98
+ ];
99
+ if (includeBEEF) {
100
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
101
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
102
+ selectFields.push('transactions.beef');
49
103
  }
50
- const outputs = await query.select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
104
+ const outputs = await query.select(selectFields);
51
105
  if (outputs === undefined || outputs.length === 0) {
52
106
  return [];
53
107
  }
54
108
  return outputs.map(output => ({
55
109
  ...output,
56
110
  outputScript: [...output.outputScript],
57
- beef: [...output.beef],
111
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
58
112
  spent: Boolean(output.spent),
59
113
  outputsConsumed: JSON.parse(output.outputsConsumed),
60
114
  consumedBy: JSON.parse(output.consumedBy)
61
115
  }));
62
116
  }
63
117
  async deleteOutput(txid, outputIndex, topic) {
64
- await this.knex('outputs').where({
65
- txid, outputIndex, topic
66
- }).del();
118
+ await this.knex.transaction(async (trx) => {
119
+ // Delete the specific output
120
+ await trx('outputs').where({ txid, outputIndex }).del();
121
+ // Check how many outputs reference the same transaction
122
+ const remainingOutputs = await trx('outputs').where({ txid }).count('* as count').first();
123
+ if (remainingOutputs !== undefined && Number(remainingOutputs.count) === 0) {
124
+ // If no more outputs reference the transaction, delete the beef
125
+ await trx('transactions').where({ txid }).del();
126
+ }
127
+ });
67
128
  }
68
129
  async insertOutput(output) {
69
- await this.knex('outputs').insert({
70
- txid: output.txid,
71
- outputIndex: Number(output.outputIndex),
72
- outputScript: Buffer.from(output.outputScript),
73
- topic: output.topic,
74
- satoshis: Number(output.satoshis),
75
- beef: Buffer.from(output.beef),
76
- outputsConsumed: JSON.stringify(output.outputsConsumed),
77
- consumedBy: JSON.stringify(output.consumedBy),
78
- spent: output.spent
130
+ const insertPromises = [this.knex('outputs').insert({
131
+ txid: output.txid,
132
+ outputIndex: Number(output.outputIndex),
133
+ outputScript: Buffer.from(output.outputScript),
134
+ topic: output.topic,
135
+ satoshis: Number(output.satoshis),
136
+ outputsConsumed: JSON.stringify(output.outputsConsumed),
137
+ consumedBy: JSON.stringify(output.consumedBy),
138
+ spent: output.spent
139
+ })];
140
+ if (output.beef !== undefined) {
141
+ const insertTransactionPromise = this.knex('transactions').insert({
142
+ txid: output.txid,
143
+ beef: Buffer.from(output.beef)
144
+ }).onConflict('txid').ignore();
145
+ insertPromises.push(insertTransactionPromise);
146
+ }
147
+ await this.knex.transaction(async (trx) => {
148
+ await Promise.all(insertPromises.map(promise => promise.transacting(trx)));
79
149
  });
80
150
  }
81
151
  async markUTXOAsSpent(txid, outputIndex, topic) {
@@ -92,11 +162,9 @@ class KnexStorage {
92
162
  topic
93
163
  }).update('consumedBy', consumedBy);
94
164
  }
95
- async updateOutputBeef(txid, outputIndex, topic, beef) {
96
- await this.knex('outputs').where({
97
- txid,
98
- outputIndex,
99
- topic
165
+ async updateTransactionBEEF(txid, beef) {
166
+ await this.knex('transactions').where({
167
+ txid
100
168
  }).update('beef', Buffer.from(beef));
101
169
  }
102
170
  async updateOutputBlockHeight(txid, outputIndex, topic, blockHeight) {
@@ -113,11 +181,11 @@ class KnexStorage {
113
181
  });
114
182
  }
115
183
  async doesAppliedTransactionExist(tx) {
116
- const appliedTransactions = await this.knex('applied_transactions').where({
117
- txid: tx.txid,
118
- topic: tx.topic
119
- }).select('txid', 'topic');
120
- return appliedTransactions.length > 0;
184
+ const result = await this.knex('applied_transactions')
185
+ .where({ txid: tx.txid, topic: tx.topic })
186
+ .select(this.knex.raw('1'))
187
+ .first();
188
+ return !!result;
121
189
  }
122
190
  }
123
191
  exports.KnexStorage = KnexStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const _2024_05_18_001_initial_js_1 = require("./migrations/2024-05-18-001-initial.js");
4
4
  const _2024_07_10_001_block_height_js_1 = require("./migrations/2024-07-10-001-block-height.js");
5
+ const _2024_07_17_001_transactions_js_1 = require("./migrations/2024-07-17-001-transactions.js");
6
+ const _2024_07_18_001_indexes_js_1 = require("./migrations/2024-07-18-001-indexes.js");
5
7
  const allMigrations = [
6
8
  { up: _2024_05_18_001_initial_js_1.up, down: _2024_05_18_001_initial_js_1.down },
7
- { up: _2024_07_10_001_block_height_js_1.up, down: _2024_07_10_001_block_height_js_1.down }
9
+ { up: _2024_07_10_001_block_height_js_1.up, down: _2024_07_10_001_block_height_js_1.down },
10
+ { up: _2024_07_17_001_transactions_js_1.up, down: _2024_07_17_001_transactions_js_1.down },
11
+ { up: _2024_07_18_001_indexes_js_1.up, down: _2024_07_18_001_indexes_js_1.down }
8
12
  ];
9
13
  exports.default = allMigrations;
10
14
  //# sourceMappingURL=all-migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"all-migrations.js","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":";;AACA,uFAAyG;AACzG,iGAA4H;AAU5H,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,EAAE,+BAAe,EAAE,IAAI,EAAE,iCAAiB,EAAE;IAChD,EAAE,EAAE,EAAE,oCAAsB,EAAE,IAAI,EAAE,sCAAwB,EAAE;CAC/D,CAAC;AACF,kBAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"all-migrations.js","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":";;AACA,uFAAyG;AACzG,iGAA4H;AAC5H,iGAA4H;AAC5H,uFAAuG;AAUvG,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,EAAE,+BAAe,EAAE,IAAI,EAAE,iCAAiB,EAAE;IAChD,EAAE,EAAE,EAAE,oCAAsB,EAAE,IAAI,EAAE,sCAAwB,EAAE;IAC9D,EAAE,EAAE,EAAE,oCAAsB,EAAE,IAAI,EAAE,sCAAwB,EAAE;IAC9D,EAAE,EAAE,EAAE,+BAAc,EAAE,IAAI,EAAE,iCAAgB,EAAE;CAC/C,CAAA;AACD,kBAAe,aAAa,CAAA"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ async function up(knex) {
5
+ // Create the new transactions table
6
+ await knex.schema.createTable('transactions', table => {
7
+ table.increments();
8
+ table.specificType('beef', 'longblob');
9
+ table.string('txid', 64).unique();
10
+ });
11
+ // Move data from outputs table to the new transactions table and ensure deduplication
12
+ await knex.raw(`
13
+ INSERT IGNORE INTO transactions (txid, beef)
14
+ SELECT txid, beef
15
+ FROM outputs
16
+ WHERE beef IS NOT NULL
17
+ `);
18
+ // Drop the beef column from the outputs table
19
+ await knex.schema.table('outputs', table => {
20
+ table.dropColumn('beef');
21
+ });
22
+ }
23
+ exports.up = up;
24
+ async function down(knex) {
25
+ // Add the beef column back to the outputs table
26
+ await knex.schema.table('outputs', table => {
27
+ table.binary('beef');
28
+ });
29
+ // Move data back from the transactions table to the outputs table using a JOIN
30
+ await knex.raw(`
31
+ UPDATE outputs
32
+ JOIN transactions ON outputs.txid = transactions.txid
33
+ SET outputs.beef = transactions.beef
34
+ `);
35
+ // Drop the transactions table
36
+ await knex.schema.dropTable('transactions');
37
+ }
38
+ exports.down = down;
39
+ //# sourceMappingURL=2024-07-17-001-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-17-001-transactions.js","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2024-07-17-001-transactions.ts"],"names":[],"mappings":";;;AAEO,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,oCAAoC;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;QACpD,KAAK,CAAC,UAAU,EAAE,CAAA;QAClB,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,sFAAsF;IACtF,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;GAKd,CAAC,CAAA;IAEF,8CAA8C;IAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACzC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AApBD,gBAoBC;AAEM,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,gDAAgD;IAChD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACzC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,IAAI,CAAC,GAAG,CAAC;;;;GAId,CAAC,CAAA;IAEF,8BAA8B;IAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;AAC7C,CAAC;AAfD,oBAeC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ async function up(knex) {
5
+ // Add index for applied_transactions table
6
+ await knex.schema.table('applied_transactions', function (table) {
7
+ table.index(['txid', 'topic'], 'idx_applied_transactions_txid_topic');
8
+ });
9
+ // Add index for transactions table
10
+ await knex.schema.table('transactions', function (table) {
11
+ table.index('txid', 'idx_transactions_txid');
12
+ });
13
+ // Add index for outputs table
14
+ await knex.schema.table('outputs', function (table) {
15
+ table.index(['txid', 'outputIndex', 'topic'], 'idx_outputs_txid_outputIndex_topic');
16
+ });
17
+ }
18
+ exports.up = up;
19
+ async function down(knex) {
20
+ // Drop index for applied_transactions table
21
+ await knex.schema.table('applied_transactions', function (table) {
22
+ table.dropIndex(['txid', 'topic'], 'idx_applied_transactions_txid_topic');
23
+ });
24
+ // Drop index for transactions table
25
+ await knex.schema.table('transactions', function (table) {
26
+ table.dropIndex('txid', 'idx_transactions_txid');
27
+ });
28
+ // Drop index for outputs table
29
+ await knex.schema.table('outputs', function (table) {
30
+ table.dropIndex(['txid', 'outputIndex', 'topic'], 'idx_outputs_txid_outputIndex_topic');
31
+ });
32
+ }
33
+ exports.down = down;
34
+ //# sourceMappingURL=2024-07-18-001-indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-18-001-indexes.js","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2024-07-18-001-indexes.ts"],"names":[],"mappings":";;;AACO,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,2CAA2C;IAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,KAAK;QAC7D,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,qCAAqC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IACF,mCAAmC;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,KAAK;QACrD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IACF,8BAA8B;IAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrF,CAAC,CAAC,CAAA;AACJ,CAAC;AAbD,gBAaC;AAEM,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,4CAA4C;IAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,KAAK;QAC7D,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,oCAAoC;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,KAAK;QACrD,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,+BAA+B;IAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;AACJ,CAAC;AAbD,oBAaC"}