Skip to content

Commit 7867c9f

Browse files
authored
Merge pull request #391 from NEMStudios/task/g390_max_fee
Fixed #390 Spread operator does not assign super class methods
2 parents b26694b + d65d9eb commit 7867c9f

30 files changed

+157
-63
lines changed

src/core/utils/DtoMapping.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,15 @@ export class DtoMapping {
5454
}
5555
})));
5656
}
57+
58+
/**
59+
* Creates a copy of the first object adding the attributes of the second object.
60+
* @param object the object to be cloned
61+
* @param attributes the extra attributes to be added to the object.
62+
* @returns a copy of the first object with the new attributes added.
63+
*/
64+
public static assign<T>(object: T, attributes: any): T {
65+
return Object.assign({__proto__: Object.getPrototypeOf(object)}, object, attributes);
66+
}
67+
5768
}

src/model/transaction/AccountAddressRestrictionTransaction.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AccountAddressRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountAddressRestrictionTransactionBuilder';
2021
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
@@ -199,13 +200,13 @@ export class AccountAddressRestrictionTransaction extends Transaction {
199200
*/
200201
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): AccountAddressRestrictionTransaction {
201202
const transactionInfo = this.checkTransactionHeightAndIndex();
202-
return {...Object.getPrototypeOf(this),
203-
restrictionAdditions:
204-
this.restrictionAdditions.map((addition) => statement.resolveAddress(addition, transactionInfo.height.toString(),
205-
transactionInfo.index, aggregateTransactionIndex)),
206-
restrictionDeletions:
207-
this.restrictionDeletions.map((deletion) => statement.resolveAddress(deletion, transactionInfo.height.toString(),
208-
transactionInfo.index, aggregateTransactionIndex)),
209-
};
203+
return DtoMapping.assign(this, {
204+
restrictionAdditions:
205+
this.restrictionAdditions.map((addition) => statement.resolveAddress(addition, transactionInfo.height.toString(),
206+
transactionInfo.index, aggregateTransactionIndex)),
207+
restrictionDeletions:
208+
this.restrictionDeletions.map((deletion) => statement.resolveAddress(deletion, transactionInfo.height.toString(),
209+
transactionInfo.index, aggregateTransactionIndex)),
210+
});
210211
}
211212
}

src/model/transaction/AccountMosaicRestrictionTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AccountMosaicRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountMosaicRestrictionTransactionBuilder';
2021
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
@@ -199,13 +200,13 @@ export class AccountMosaicRestrictionTransaction extends Transaction {
199200
*/
200201
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): AccountMosaicRestrictionTransaction {
201202
const transactionInfo = this.checkTransactionHeightAndIndex();
202-
return {...Object.getPrototypeOf(this),
203+
return DtoMapping.assign(this, {
203204
restrictionAdditions:
204205
this.restrictionAdditions.map((addition) => statement.resolveMosaicId(addition, transactionInfo.height.toString(),
205206
transactionInfo.index, aggregateTransactionIndex)),
206207
restrictionDeletions:
207208
this.restrictionDeletions.map((deletion) => statement.resolveMosaicId(deletion, transactionInfo.height.toString(),
208209
transactionInfo.index, aggregateTransactionIndex)),
209-
};
210+
});
210211
}
211212
}

src/model/transaction/AggregateTransaction.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import {KeyPair, MerkleHashBuilder, SHA3Hasher, SignSchema} from '../../core/crypto';
1818
import {Convert} from '../../core/format';
19+
import { DtoMapping } from '../../core/utils/DtoMapping';
1920
import {AggregateBondedTransactionBuilder} from '../../infrastructure/catbuffer/AggregateBondedTransactionBuilder';
2021
import {AggregateCompleteTransactionBuilder} from '../../infrastructure/catbuffer/AggregateCompleteTransactionBuilder';
2122
import {AmountDto} from '../../infrastructure/catbuffer/AmountDto';
@@ -193,7 +194,7 @@ export class AggregateTransaction extends Transaction {
193194
*/
194195
public addTransactions(transactions: InnerTransaction[]): AggregateTransaction {
195196
const innerTransactions = this.innerTransactions.concat(transactions);
196-
return Object.assign({__proto__: Object.getPrototypeOf(this)}, this, {innerTransactions});
197+
return DtoMapping.assign(this, {innerTransactions});
197198
}
198199

199200
/**
@@ -204,7 +205,7 @@ export class AggregateTransaction extends Transaction {
204205
*/
205206
public addCosignatures(cosigs: AggregateTransactionCosignature[]): AggregateTransaction {
206207
const cosignatures = this.cosignatures.concat(cosigs);
207-
return Object.assign({__proto__: Object.getPrototypeOf(this)}, this, {cosignatures});
208+
return DtoMapping.assign(this, {cosignatures});
208209
}
209210

210211
/**
@@ -407,8 +408,8 @@ export class AggregateTransaction extends Transaction {
407408
*/
408409
resolveAliases(statement: Statement): AggregateTransaction {
409410
const transactionInfo = this.checkTransactionHeightAndIndex();
410-
return Object.assign({__proto__: Object.getPrototypeOf(this)}, this,
411-
{innerTransactions: this.innerTransactions.map((tx) => tx.resolveAliases(statement, transactionInfo.index))
411+
return DtoMapping.assign(this,
412+
{innerTransactions: this.innerTransactions.map((tx) => tx.resolveAliases(statement, transactionInfo.index))
412413
.sort((a, b) => a.transactionInfo!.index - b.transactionInfo!.index)});
413414
}
414415
}

src/model/transaction/LockFundsTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
1920
import { BlockDurationDto } from '../../infrastructure/catbuffer/BlockDurationDto';
2021
import { EmbeddedHashLockTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedHashLockTransactionBuilder';
@@ -211,8 +212,8 @@ export class LockFundsTransaction extends Transaction {
211212
*/
212213
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): LockFundsTransaction {
213214
const transactionInfo = this.checkTransactionHeightAndIndex();
214-
return {...Object.getPrototypeOf(this),
215+
return DtoMapping.assign(this, {
215216
mosaic: statement.resolveMosaic(this.mosaic, transactionInfo.height.toString(),
216-
transactionInfo.index, aggregateTransactionIndex)};
217+
transactionInfo.index, aggregateTransactionIndex)});
217218
}
218219
}

src/model/transaction/MosaicAddressRestrictionTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
2021
import {
@@ -243,10 +244,10 @@ export class MosaicAddressRestrictionTransaction extends Transaction {
243244
*/
244245
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): MosaicAddressRestrictionTransaction {
245246
const transactionInfo = this.checkTransactionHeightAndIndex();
246-
return {...Object.getPrototypeOf(this),
247+
return DtoMapping.assign(this, {
247248
mosaicId: statement.resolveMosaicId(this.mosaicId, transactionInfo.height.toString(),
248249
transactionInfo.index, aggregateTransactionIndex),
249250
targetAddress: statement.resolveAddress(this.targetAddress,
250-
transactionInfo.height.toString(), transactionInfo.index, aggregateTransactionIndex)};
251+
transactionInfo.height.toString(), transactionInfo.index, aggregateTransactionIndex)});
251252
}
252253
}

src/model/transaction/MosaicGlobalRestrictionTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
2021
import {
@@ -253,10 +254,10 @@ export class MosaicGlobalRestrictionTransaction extends Transaction {
253254
*/
254255
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): MosaicGlobalRestrictionTransaction {
255256
const transactionInfo = this.checkTransactionHeightAndIndex();
256-
return {...Object.getPrototypeOf(this),
257+
return DtoMapping.assign(this, {
257258
mosaicId: statement.resolveMosaicId(this.mosaicId, transactionInfo.height.toString(),
258259
transactionInfo.index, aggregateTransactionIndex),
259260
referenceMosaicId: statement.resolveMosaicId(this.referenceMosaicId, transactionInfo.height.toString(),
260-
transactionInfo.index, aggregateTransactionIndex)};
261+
transactionInfo.index, aggregateTransactionIndex)});
261262
}
262263
}

src/model/transaction/MosaicMetadataTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
2021
import { EmbeddedMosaicMetadataTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedMosaicMetadataTransactionBuilder';
@@ -219,8 +220,8 @@ export class MosaicMetadataTransaction extends Transaction {
219220
*/
220221
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): MosaicMetadataTransaction {
221222
const transactionInfo = this.checkTransactionHeightAndIndex();
222-
return {...Object.getPrototypeOf(this),
223+
return DtoMapping.assign(this, {
223224
targetMosaicId: statement.resolveMosaicId(this.targetMosaicId, transactionInfo.height.toString(),
224-
transactionInfo.index, aggregateTransactionIndex)};
225+
transactionInfo.index, aggregateTransactionIndex)});
225226
}
226227
}

src/model/transaction/MosaicSupplyChangeTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { Convert } from '../../core/format';
18+
import { DtoMapping } from '../../core/utils/DtoMapping';
1819
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1920
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
2021
import { EmbeddedMosaicSupplyChangeTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedMosaicSupplyChangeTransactionBuilder';
@@ -193,8 +194,8 @@ export class MosaicSupplyChangeTransaction extends Transaction {
193194
*/
194195
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): MosaicSupplyChangeTransaction {
195196
const transactionInfo = this.checkTransactionHeightAndIndex();
196-
return {...Object.getPrototypeOf(this),
197+
return DtoMapping.assign(this, {
197198
mosaicId: statement.resolveMosaicId(this.mosaicId, transactionInfo.height.toString(),
198-
transactionInfo.index, aggregateTransactionIndex)};
199+
transactionInfo.index, aggregateTransactionIndex)});
199200
}
200201
}

src/model/transaction/SecretLockTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* limitations under the License.
1515
*/
1616
import { Convert, Convert as convert } from '../../core/format';
17+
import { DtoMapping } from '../../core/utils/DtoMapping';
1718
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
1819
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
1920
import { BlockDurationDto } from '../../infrastructure/catbuffer/BlockDurationDto';
@@ -240,10 +241,10 @@ export class SecretLockTransaction extends Transaction {
240241
*/
241242
resolveAliases(statement: Statement, aggregateTransactionIndex: number = 0): SecretLockTransaction {
242243
const transactionInfo = this.checkTransactionHeightAndIndex();
243-
return {...Object.getPrototypeOf(this),
244+
return DtoMapping.assign(this, {
244245
recipientAddress: statement.resolveAddress(this.recipientAddress,
245246
transactionInfo.height.toString(), transactionInfo.index, aggregateTransactionIndex),
246247
mosaic: statement.resolveMosaic(this.mosaic, transactionInfo.height.toString(),
247-
transactionInfo.index, aggregateTransactionIndex)};
248+
transactionInfo.index, aggregateTransactionIndex)});
248249
}
249250
}

0 commit comments

Comments
 (0)