Skip to content

Commit 33b0132

Browse files
committed
fix types and deserialization numbers from bigint
1 parent 118e64d commit 33b0132

File tree

6 files changed

+33
-16
lines changed

6 files changed

+33
-16
lines changed

pkg/src/dpp/structs/Batch/DocumentTransitions/DocumentCreateTransition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export class DocumentCreateTransitionWASM {
2525
)
2626
}
2727

28-
get data (): object {
29-
return valueFromDynamicValue(this._rawDocumentCreateTransition.data)
28+
get data (): any {
29+
return valueFromDynamicValue(this._rawDocumentCreateTransition.data, true)
3030
}
3131

3232
set data (value: object) {

pkg/src/dpp/structs/Batch/DocumentTransitions/DocumentReplaceTransition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ export class DocumentReplaceTransitionWASM {
2222
)
2323
}
2424

25-
get data (): object {
26-
return valueFromDynamicValue(this._rawDocumentReplaceTransition.data)
25+
get data (): any {
26+
return valueFromDynamicValue(this._rawDocumentReplaceTransition.data, true)
2727
}
2828

2929
set data (value: object) {

pkg/src/dpp/structs/DataContract.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ export class DataContractWASM {
120120
this._rawDataContract.keywords = value
121121
}
122122

123-
getSchemas (): object {
124-
return valueFromDynamicValue(this._rawDataContract.getSchemas())
123+
getSchemas (): any {
124+
return valueFromDynamicValue(this._rawDataContract.getSchemas(), true)
125125
}
126126

127-
getConfig (): object {
127+
getConfig (): any {
128128
return valueFromDynamicValue(this._rawDataContract.getConfig())
129129
}
130130

@@ -144,11 +144,11 @@ export class DataContractWASM {
144144
return this._rawDataContract.base64(valueToDynamicValue(platformVersion))
145145
}
146146

147-
toJSON (platformVersion: PlatformVersionLike): object {
147+
toJSON (platformVersion: PlatformVersionLike): any {
148148
return this._rawDataContract.toJson(valueToDynamicValue(platformVersion))
149149
}
150150

151-
toValue (platformVersion: PlatformVersionLike): object {
151+
toValue (platformVersion: PlatformVersionLike): any {
152152
return valueFromDynamicValue(this._rawDataContract.toValue(valueToDynamicValue(platformVersion))) as object
153153
}
154154

pkg/src/dpp/structs/Document.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ export class DocumentWASM {
6161
this._rawDocument.ownerId = prepareIdentifierValue(value)
6262
}
6363

64-
get properties (): object {
65-
return valueFromDynamicValue(this._rawDocument.properties)
64+
get properties (): any {
65+
return valueFromDynamicValue(this._rawDocument.properties, true)
6666
}
6767

6868
set properties (value: object) {

pkg/src/dpp/utils.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,25 @@ export function valueToDynamicValue (value: any): DynamicValue {
4040
}
4141
}
4242

43-
export function valueFromDynamicValue (dynamicValue: DynamicValue): any {
43+
export function valueFromDynamicValue (dynamicValue: DynamicValue, jsonLike: boolean = false): any {
4444
if (dynamicValue.value instanceof dppProvider.dpp.DynamicValue) {
45-
return valueToDynamicValue(dynamicValue.value)
45+
return valueFromDynamicValue(dynamicValue.value, jsonLike)
4646
} else if (dynamicValue.isBigInt()) {
47-
return BigInt(dynamicValue.value)
47+
const num = BigInt(dynamicValue.value)
48+
if (jsonLike && num < BigInt(Number.MAX_SAFE_INTEGER) && num > BigInt(Number.MIN_SAFE_INTEGER)) {
49+
return Number(dynamicValue.value)
50+
} else {
51+
return num
52+
}
4853
} else if (Array.isArray(dynamicValue.value)) {
49-
return dynamicValue.value.map(valueFromDynamicValue)
54+
return dynamicValue.value.map(v => valueFromDynamicValue(v, jsonLike))
5055
} else if (typeof dynamicValue.value === 'object' && !(dynamicValue.value instanceof Uint8Array) && dynamicValue.value !== null) {
5156
const obj: { [key: string]: any } = {}
5257

5358
const keys: string[] = Object.keys(dynamicValue.value)
5459

5560
for (const key of keys) {
56-
obj[key] = valueFromDynamicValue(dynamicValue.value[key])
61+
obj[key] = valueFromDynamicValue(dynamicValue.value[key], jsonLike)
5762
}
5863

5964
return obj

tests/unit/DynamicValue.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,16 @@ describe('DynamicValue', () => {
111111
expect(dynValue.value.stringInt.getType()).toStrictEqual('String')
112112
expect(dynValue.value.stringFloat.getType()).toStrictEqual('String')
113113
})
114+
115+
describe('should decode document from state transition in jsonLike', function () {
116+
const stateTransition = dpp.StateTransitionWASM.fromBase64('AgHv88sfWzscuW2Ob/0v5d+EgqmWG7ZIvlQG7mHWBH7z9gEAAAAB7JH7W+JkM0Vne2U1zlWYVeQNzRPTpdiWRfsgfwNS2UoCCGJsb2dQb3N0KBdMgeznVQ1smUXVFNPfE2PC379wpWVH8cdu2ilzeI0Ah/i2xfrKCm5ACQAbEQkSc+GRUkdLor4Eu7Vzf6oRc9UHBmJsb2dJZAogdhC4nVm3ufPCgdfoOKXtnhqwg7O3axyTS9WB3EFvNBYPY29tbWVudHNFbmFibGVkEwEHY29udGVudAr7AUh4nM2TTWrDMBCFrxK0jkCyJMvqLnRV6A1KFhpplJgotrEVaAi+e8clpdBuvCnNcn7ezPvQ6O3G2siemKgNSGETT8ZarhUm7hpX8yStEpVCk6xlW1auA1L34Ed/GP1wpNQw9sPEnm6s4Ht57nM/UkPE5C+5UBl8OB3G/tLF37VFscvtoTtjV6iSMRU2b1nou/KZIXf3jUvrXUHRrosbv8ltKRk30JbNl2LLpnLNuPiZ5z1NOrY5jtjRqP28vbM656zTleagJHCNXnIQiUIpgozGg2/0N2s4Yji9tlN5KXj+A97FJG1AcpZ8nnANv1wHGo22ASrFXQDJde0SBzDIdQBVRQEoDDw2aLUONPkKtfF0s9bR9bqGkJW3PNYCg/FOgIqPDarWgQrRxKapBXdCJ3pR7TjUVnJrpAo6yhSc/4dv+tPu/gNBt2qtC3B1Ymxpc2hlZEF0Av0AAAGcptJlIwRzbHVnEhV0aGlzLWlzLW15LWZpcnN0LXBvc3QIc3VidGl0bGUSD1dpdGggYSBzdWJ0aXRsZQV0aXRsZRIVVGhpcyBpcyBteSBmaXJzdCBwb3N0AAABQR+H40MbUEmFXQbTPcwy9vMD8EiTwDzMpW3YIkfSIDvHij5ZIAVvqm0ZJScJzKV7EnRUi/f1tZ/wFJfd1+LDtpps')
117+
118+
const batch = dpp.BatchTransitionWASM.fromStateTransition(stateTransition)
119+
120+
const transition = batch.transitions[0].toTransition() as dpp.DocumentTransitionWASM
121+
122+
const publishedAt = transition.createTransition.data.publishedAt
123+
124+
expect(typeof publishedAt).toEqual('number')
125+
})
114126
})

0 commit comments

Comments
 (0)