Skip to content

Commit 3114a2a

Browse files
authored
Merge branch 'master' into travis-alpha-releases-from-master
2 parents 81f9940 + 97c3ff6 commit 3114a2a

23 files changed

+311
-182
lines changed

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file.
33

44
The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
55

6+
## [0.17.3] - 04-Mar-2020
7+
8+
**Milestone**: Fushicho.4(RC3 0.9.3.1)
9+
Versions | |
10+
---|---|---
11+
SDK Core| v0.17.3 | https://www.npmjs.com/package/symbol-sdk
12+
Catbuffer | v0.0.11 | https://www.npmjs.com/package/catbuffer-typescript
13+
Client Library | v0.8.5 | https://www.npmjs.com/package/symbol-openapi-typescript-node-client
14+
15+
- Fixed `MosaicNonce` issue handling signed integer from rest payload.
16+
- **[BREAKING CHANGE]** Updated `NodeTime` model to use `UInt64`.
17+
618
## [0.17.2] - 02-Mar-2020
719

820
**Milestone**: Fushicho.4(RC3 0.9.3.1)
@@ -407,7 +419,8 @@ Client Library | v0.7.20-alpha.6 | https://www.npmjs.com/package/nem2-sdk-opena
407419

408420
- Initial code release.
409421

410-
[0.17.1]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.17.1...v0.17.2
422+
[0.17.3]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.17.2...v0.17.3
423+
[0.17.2]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.17.1...v0.17.2
411424
[0.17.1]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.17.0...v0.17.1
412425
[0.17.0]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.16.5...v0.17.0
413426
[0.16.5]: https://github.com/nemtech/symbol-sdk-typescript-javascript/compare/v0.16.4...v0.16.5

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ The Symbol SDK for TypeScript / JavaScript allows you to develop web, mobile, an
1313

1414
**!!! Please be noted that the NEM2-SDK is rebranded to SYMBOL-SDK now**.
1515

16-
Due to a network upgrade with [catapult-server@Fushicho](https://github.com/nemtech/catapult-server/releases/tag/v0.9.3.1) version, **it is recommended to use this package's 0.17.2 version and upwards to use this package with Fushicho versioned networks**.
16+
Due to a network upgrade with [catapult-server@Fushicho](https://github.com/nemtech/catapult-server/releases/tag/v0.9.3.1) version, **it is recommended to use this package's 0.17.3 version and upwards to use this package with Fushicho versioned networks**.
1717

18-
The upgrade to this package's [version v0.17.2](https://github.com/nemtech/symbol-sdk-typescript-javascript/releases/tag/v0.17.2) is mandatory for **fushicho compatibility**.
18+
The upgrade to this package's [version v0.17.3](https://github.com/nemtech/symbol-sdk-typescript-javascript/releases/tag/v0.17.3) is mandatory for **fushicho compatibility**.
1919

2020
You can find the complete changelog [here](CHANGELOG.md).
2121

e2e/infrastructure/AccountHttp.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,12 @@ describe('AccountHttp', () => {
228228
describe('transactions', () => {
229229
it('should call transactions successfully by type', async () => {
230230
const transactions = await accountRepository.getAccountTransactions(
231-
publicAccount.address, new QueryParams(), new TransactionFilter({ types: [TransactionType.TRANSFER] })).toPromise();
231+
publicAccount.address, new QueryParams(), new TransactionFilter({
232+
types: [TransactionType.TRANSFER, TransactionType.AGGREGATE_COMPLETE],
233+
})).toPromise();
232234
expect(transactions.length).to.be.greaterThan(0);
233235
transactions.forEach((t) => {
234-
expect(t.type).to.be.eq(TransactionType.TRANSFER);
236+
expect((t.type === TransactionType.TRANSFER || t.type === TransactionType.AGGREGATE_COMPLETE)).to.be.eq(true);
235237
});
236238
});
237239
});

e2e/infrastructure/MosaicHttp.spec.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,32 @@ describe('MosaicHttp', () => {
6565
*/
6666
describe('Setup test MosaicId', () => {
6767

68-
it('Announce MosaicDefinitionTransaction', () => {
69-
const nonce = MosaicNonce.createRandom();
68+
it('Announce MosaicDefinitionTransaction', async () => {
69+
const nonce = MosaicNonce.createFromNumber(-1501238750);
70+
expect(nonce.toDTO()).to.be.equals(2793728546);
71+
expect(nonce.toHex()).to.be.equals('22EA84A6');
7072
mosaicId = MosaicId.createFromNonce(nonce, account.publicAccount);
7173
const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create(
7274
Deadline.create(),
7375
nonce,
7476
mosaicId,
7577
MosaicFlags.create(true, true, false),
7678
3,
77-
UInt64.fromUint(0),
79+
UInt64.fromUint(100),
7880
networkType,
7981
helper.maxFee,
8082
);
8183
const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash);
8284

83-
return helper.announce(signedTransaction);
85+
const listenedTransaction = await helper.announce(signedTransaction) as MosaicDefinitionTransaction;
86+
expect(mosaicDefinitionTransaction.nonce.toHex()).to.be.equal(listenedTransaction.nonce.toHex());
87+
expect(mosaicDefinitionTransaction.nonce).to.deep.equal(listenedTransaction.nonce);
88+
expect(mosaicDefinitionTransaction.getMosaicNonceIntValue()).to.be.equal(listenedTransaction.getMosaicNonceIntValue());
89+
90+
const savedTransaction = await helper.repositoryFactory.createTransactionRepository().getTransaction(signedTransaction.hash).toPromise() as MosaicDefinitionTransaction;
91+
expect(mosaicDefinitionTransaction.nonce.toHex()).to.be.equal(savedTransaction.nonce.toHex());
92+
expect(mosaicDefinitionTransaction.nonce).to.deep.equal(savedTransaction.nonce);
93+
expect(mosaicDefinitionTransaction.getMosaicNonceIntValue()).to.be.equal(savedTransaction.getMosaicNonceIntValue());
8494
});
8595
});
8696

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "symbol-sdk",
3-
"version": "0.17.2",
3+
"version": "0.17.3",
44
"description": "Reactive symbol sdk for typescript and javascript",
55
"scripts": {
66
"pretest": "npm run build",

src/core/format/Convert.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,31 @@ export class Convert {
229229
}
230230
return Convert.uint8ToHex(Uint8Array.from(delta));
231231
}
232+
233+
/**
234+
* It splits the number's bytes into a an array.
235+
* @param number the number
236+
* @param arraySize the expected size of the array.
237+
*/
238+
public static numberToUint8Array(number: number, arraySize: number): Uint8Array {
239+
const uint8Array = new Uint8Array(arraySize);
240+
for (let index = 0; index < uint8Array.length; index++) {
241+
const byte = number & 0xff;
242+
uint8Array [index] = byte;
243+
number = (number - byte) / 256;
244+
}
245+
return uint8Array;
246+
}
247+
248+
/**
249+
* It creates a number from the bytes in the array.
250+
* @param array the number from the bytes.
251+
*/
252+
public static uintArray8ToNumber(array: Uint8Array): number {
253+
let value = 0;
254+
for (let index = 0; index < array.length; index++) {
255+
value += array[index] << (index * 8);
256+
}
257+
return value >>> 0;
258+
}
232259
}

src/infrastructure/Http.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ export abstract class Http {
6565
}
6666

6767
errorHandling(error: any): Error {
68-
if (error.response && error.response.statusCode && error.body) {
68+
if (error.response && error.response.statusCode && error.response.body) {
6969
const formattedError = {
7070
statusCode: error.response.statusCode,
7171
errorDetails: {
7272
statusCode: error.response.statusCode,
7373
statusMessage: error.response.statusMessage,
7474
},
75-
body: error.body,
75+
body: error.response.body,
7676
};
7777
return new Error(JSON.stringify(formattedError));
7878
}

src/infrastructure/NodeHttp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ export class NodeHttp extends Http implements NodeRepository {
7272
(body) => {
7373
const nodeTimeDTO = body;
7474
if (nodeTimeDTO.communicationTimestamps.sendTimestamp && nodeTimeDTO.communicationTimestamps.receiveTimestamp) {
75-
return new NodeTime(UInt64.fromNumericString(nodeTimeDTO.communicationTimestamps.sendTimestamp).toDTO(),
76-
UInt64.fromNumericString(nodeTimeDTO.communicationTimestamps.receiveTimestamp).toDTO());
75+
return new NodeTime(UInt64.fromNumericString(nodeTimeDTO.communicationTimestamps.sendTimestamp),
76+
UInt64.fromNumericString(nodeTimeDTO.communicationTimestamps.receiveTimestamp));
7777
}
7878
throw Error('Node time not available');
7979
},

src/infrastructure/transaction/CreateTransactionFromDTO.ts

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,48 +13,47 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
import {Convert as convert} from '../../core/format';
16+
import { Convert as convert } from '../../core/format';
1717
import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping';
18-
import {Address} from '../../model/account/Address';
19-
import {PublicAccount} from '../../model/account/PublicAccount';
20-
import {NetworkType} from '../../model/blockchain/NetworkType';
18+
import { Address } from '../../model/account/Address';
19+
import { PublicAccount } from '../../model/account/PublicAccount';
2120
import { EncryptedMessage } from '../../model/message/EncryptedMessage';
2221
import { MessageType } from '../../model/message/MessageType';
2322
import { PersistentHarvestingDelegationMessage } from '../../model/message/PersistentHarvestingDelegationMessage';
24-
import {EmptyMessage, PlainMessage} from '../../model/message/PlainMessage';
25-
import {Mosaic} from '../../model/mosaic/Mosaic';
26-
import {MosaicFlags} from '../../model/mosaic/MosaicFlags';
27-
import {MosaicId} from '../../model/mosaic/MosaicId';
23+
import { EmptyMessage, PlainMessage } from '../../model/message/PlainMessage';
24+
import { Mosaic } from '../../model/mosaic/Mosaic';
25+
import { MosaicFlags } from '../../model/mosaic/MosaicFlags';
26+
import { MosaicId } from '../../model/mosaic/MosaicId';
2827
import { MosaicNonce } from '../../model/mosaic/MosaicNonce';
29-
import {NamespaceId} from '../../model/namespace/NamespaceId';
30-
import {AccountAddressRestrictionTransaction} from '../../model/transaction/AccountAddressRestrictionTransaction';
28+
import { NamespaceId } from '../../model/namespace/NamespaceId';
29+
import { AccountAddressRestrictionTransaction } from '../../model/transaction/AccountAddressRestrictionTransaction';
3130
import { AccountLinkTransaction } from '../../model/transaction/AccountLinkTransaction';
3231
import { AccountMetadataTransaction } from '../../model/transaction/AccountMetadataTransaction';
33-
import {AccountMosaicRestrictionTransaction} from '../../model/transaction/AccountMosaicRestrictionTransaction';
34-
import {AccountOperationRestrictionTransaction} from '../../model/transaction/AccountOperationRestrictionTransaction';
35-
import {AddressAliasTransaction} from '../../model/transaction/AddressAliasTransaction';
36-
import {AggregateTransaction} from '../../model/transaction/AggregateTransaction';
37-
import {AggregateTransactionCosignature} from '../../model/transaction/AggregateTransactionCosignature';
38-
import {AggregateTransactionInfo} from '../../model/transaction/AggregateTransactionInfo';
39-
import {Deadline} from '../../model/transaction/Deadline';
40-
import {LockFundsTransaction} from '../../model/transaction/LockFundsTransaction';
32+
import { AccountMosaicRestrictionTransaction } from '../../model/transaction/AccountMosaicRestrictionTransaction';
33+
import { AccountOperationRestrictionTransaction } from '../../model/transaction/AccountOperationRestrictionTransaction';
34+
import { AddressAliasTransaction } from '../../model/transaction/AddressAliasTransaction';
35+
import { AggregateTransaction } from '../../model/transaction/AggregateTransaction';
36+
import { AggregateTransactionCosignature } from '../../model/transaction/AggregateTransactionCosignature';
37+
import { AggregateTransactionInfo } from '../../model/transaction/AggregateTransactionInfo';
38+
import { Deadline } from '../../model/transaction/Deadline';
39+
import { LockFundsTransaction } from '../../model/transaction/LockFundsTransaction';
4140
import { MosaicAddressRestrictionTransaction } from '../../model/transaction/MosaicAddressRestrictionTransaction';
42-
import {MosaicAliasTransaction} from '../../model/transaction/MosaicAliasTransaction';
43-
import {MosaicDefinitionTransaction} from '../../model/transaction/MosaicDefinitionTransaction';
41+
import { MosaicAliasTransaction } from '../../model/transaction/MosaicAliasTransaction';
42+
import { MosaicDefinitionTransaction } from '../../model/transaction/MosaicDefinitionTransaction';
4443
import { MosaicGlobalRestrictionTransaction } from '../../model/transaction/MosaicGlobalRestrictionTransaction';
4544
import { MosaicMetadataTransaction } from '../../model/transaction/MosaicMetadataTransaction';
46-
import {MosaicSupplyChangeTransaction} from '../../model/transaction/MosaicSupplyChangeTransaction';
47-
import {MultisigAccountModificationTransaction} from '../../model/transaction/MultisigAccountModificationTransaction';
45+
import { MosaicSupplyChangeTransaction } from '../../model/transaction/MosaicSupplyChangeTransaction';
46+
import { MultisigAccountModificationTransaction } from '../../model/transaction/MultisigAccountModificationTransaction';
4847
import { NamespaceMetadataTransaction } from '../../model/transaction/NamespaceMetadataTransaction';
49-
import {NamespaceRegistrationTransaction} from '../../model/transaction/NamespaceRegistrationTransaction';
50-
import {SecretLockTransaction} from '../../model/transaction/SecretLockTransaction';
51-
import {SecretProofTransaction} from '../../model/transaction/SecretProofTransaction';
52-
import {SignedTransaction} from '../../model/transaction/SignedTransaction';
53-
import {Transaction} from '../../model/transaction/Transaction';
54-
import {TransactionInfo} from '../../model/transaction/TransactionInfo';
55-
import {TransactionType} from '../../model/transaction/TransactionType';
56-
import {TransferTransaction} from '../../model/transaction/TransferTransaction';
57-
import {UInt64} from '../../model/UInt64';
48+
import { NamespaceRegistrationTransaction } from '../../model/transaction/NamespaceRegistrationTransaction';
49+
import { SecretLockTransaction } from '../../model/transaction/SecretLockTransaction';
50+
import { SecretProofTransaction } from '../../model/transaction/SecretProofTransaction';
51+
import { SignedTransaction } from '../../model/transaction/SignedTransaction';
52+
import { Transaction } from '../../model/transaction/Transaction';
53+
import { TransactionInfo } from '../../model/transaction/TransactionInfo';
54+
import { TransactionType } from '../../model/transaction/TransactionType';
55+
import { TransferTransaction } from '../../model/transaction/TransferTransaction';
56+
import { UInt64 } from '../../model/UInt64';
5857

5958
// tslint:disable: no-use-before-declare
6059
/**
@@ -161,7 +160,7 @@ const CreateStandaloneTransactionFromDTO = (transactionDTO, transactionInfo): Tr
161160
transactionDTO.version,
162161
Deadline.createFromDTO(transactionDTO.deadline),
163162
UInt64.fromNumericString(transactionDTO.maxFee || '0'),
164-
MosaicNonce.createFromHex(transactionDTO.nonce.toString(16)),
163+
MosaicNonce.createFromNumber(transactionDTO.nonce),
165164
new MosaicId(transactionDTO.id),
166165
new MosaicFlags(transactionDTO.flags),
167166
transactionDTO.divisibility,

0 commit comments

Comments
 (0)