wowok 1.2.2 → 1.2.4
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.
- package/dist/exception.d.ts +2 -1
- package/dist/exception.d.ts.map +1 -1
- package/dist/exception.js +1 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +26 -25
- package/dist/machine.js +7 -6
- package/dist/passport.d.ts.map +1 -1
- package/dist/passport.js +30 -28
- package/dist/permission.js +2 -1
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +3 -12
- package/dist/protocol.d.ts +11 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +36 -6
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +5 -15
- package/dist/service.d.ts +4 -4
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +29 -39
- package/dist/utils.d.ts +9 -21
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +116 -54
- package/dist/vote.js +8 -7
- package/package.json +1 -1
- package/src/exception.ts +1 -0
- package/src/guard.ts +26 -25
- package/src/machine.ts +7 -7
- package/src/passport.ts +30 -27
- package/src/permission.ts +2 -2
- package/src/progress.ts +4 -12
- package/src/protocol.ts +37 -9
- package/src/repository.ts +5 -14
- package/src/service.ts +30 -39
- package/src/utils.ts +118 -58
- package/src/vote.ts +8 -8
package/dist/protocol.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Ed25519Keypair } from '@mysten/sui.js/keypairs/ed25519';
|
|
|
3
3
|
import { fromHEX } from '@mysten/bcs';
|
|
4
4
|
import { TransactionBlock, Inputs } from '@mysten/sui.js/transactions';
|
|
5
5
|
import { capitalize, IsValidArray } from './utils';
|
|
6
|
+
import { isValidSuiObjectId } from '@mysten/sui.js/utils';
|
|
6
7
|
export var MODULES;
|
|
7
8
|
(function (MODULES) {
|
|
8
9
|
MODULES["machine"] = "machine";
|
|
@@ -56,8 +57,11 @@ export var ValueType;
|
|
|
56
57
|
ValueType[ValueType["TYPE_OPTION_U64"] = 114] = "TYPE_OPTION_U64";
|
|
57
58
|
ValueType[ValueType["TYPE_OPTION_U128"] = 115] = "TYPE_OPTION_U128";
|
|
58
59
|
ValueType[ValueType["TYPE_OPTION_U256"] = 116] = "TYPE_OPTION_U256";
|
|
59
|
-
ValueType[ValueType["
|
|
60
|
-
ValueType[ValueType["
|
|
60
|
+
ValueType[ValueType["TYPE_OPTION_STRING"] = 117] = "TYPE_OPTION_STRING";
|
|
61
|
+
ValueType[ValueType["TYPE_VEC_U256"] = 118] = "TYPE_VEC_U256";
|
|
62
|
+
ValueType[ValueType["TYPE_STRING"] = 119] = "TYPE_STRING";
|
|
63
|
+
ValueType[ValueType["TYPE_VEC_STRING"] = 120] = "TYPE_VEC_STRING";
|
|
64
|
+
ValueType[ValueType["TYPE_U256"] = 121] = "TYPE_U256";
|
|
61
65
|
})(ValueType || (ValueType = {}));
|
|
62
66
|
export const OperatorTypeArray = Object.values(OperatorType).filter((v) => typeof (v) === 'number');
|
|
63
67
|
export const ValueTypeArray = Object.values(ValueType).filter((v) => typeof (v) === 'number');
|
|
@@ -68,7 +72,7 @@ export const SER_VALUE = [
|
|
|
68
72
|
{ type: ValueType.TYPE_ADDRESS, name: 'address', description: 'address or object-id. eg:0x6789af' },
|
|
69
73
|
{ type: ValueType.TYPE_U64, name: 'number', description: 'unsigned-64 number. eg:23870233' },
|
|
70
74
|
{ type: ValueType.TYPE_U8, name: 'number', description: 'unsigned-8 number. eg:255' },
|
|
71
|
-
{ type: ValueType.TYPE_VEC_U8, name: '[number]', description: 'unsigned-8 number array. eg:"
|
|
75
|
+
{ type: ValueType.TYPE_VEC_U8, name: '[number]', description: 'unsigned-8 number array. eg:"[1,2,3]"' },
|
|
72
76
|
{ type: ValueType.TYPE_U128, name: 'number', description: 'unsigned-8 number. eg:12348900999' },
|
|
73
77
|
{ type: ValueType.TYPE_VEC_ADDRESS, name: '[address]', description: 'address array. eg:[0x2277f2, 0x3344af]' },
|
|
74
78
|
{ type: ValueType.TYPE_VEC_BOOL, name: '[bool]', description: 'boolean array. eg:[true, false, true]' },
|
|
@@ -82,6 +86,9 @@ export const SER_VALUE = [
|
|
|
82
86
|
{ type: ValueType.TYPE_OPTION_U128, name: 'option', description: 'option of u128. eg:none or u128 value' },
|
|
83
87
|
{ type: ValueType.TYPE_OPTION_U256, name: 'option', description: 'option of u256. eg:none or u256 value' },
|
|
84
88
|
{ type: ValueType.TYPE_VEC_U256, name: '[number]', description: 'unsigned-256 number array. eg:[123, 778888, 42312]' },
|
|
89
|
+
{ type: ValueType.TYPE_VEC_STRING, name: '[string]', description: 'ascii string array. eg:["abc", "hi"]' },
|
|
90
|
+
{ type: ValueType.TYPE_STRING, name: 'string', description: 'ascii string. eg:"wowok"' },
|
|
91
|
+
{ type: ValueType.TYPE_OPTION_STRING, name: 'option', description: 'option of string. eg:none or string value' },
|
|
85
92
|
{ type: ValueType.TYPE_U256, name: 'number', description: 'unsigned-256 number. eg:12345678901233' },
|
|
86
93
|
];
|
|
87
94
|
export var ContextType;
|
|
@@ -126,9 +133,9 @@ export class Protocol {
|
|
|
126
133
|
case ENTRYPOINT.devnet:
|
|
127
134
|
break;
|
|
128
135
|
case ENTRYPOINT.testnet:
|
|
129
|
-
this.package = "
|
|
130
|
-
this.wowok_object = '
|
|
131
|
-
this.entity_object = '
|
|
136
|
+
this.package = "0xd3cab93b07c18d3ef0557fb1f958dc57473c7add42f87c89ea7b7cceaa58e294";
|
|
137
|
+
this.wowok_object = '0x48224d5a1c30f7b0eda5874d794dd695ce929e59247ee4c472d10f3aa5323a24';
|
|
138
|
+
this.entity_object = '0xd0b3861a38359a2aa12523f47499aeab7bc9b83f8948a84c945d6990adbf6a86';
|
|
132
139
|
this.graphql = 'https://sui-testnet.mystenlabs.com/graphql';
|
|
133
140
|
break;
|
|
134
141
|
case ENTRYPOINT.mainnet:
|
|
@@ -211,6 +218,26 @@ export class Protocol {
|
|
|
211
218
|
static SUI_COIN_TYPE = '0x2::coin::Coin<0x2::sui::SUI>'; // COIN TYPE
|
|
212
219
|
WOWOK_TOKEN_TYPE = () => { return this.package + '::wowok::WOWOK'; };
|
|
213
220
|
WOWOK_COIN_TYPE = () => { return '0x2::coin::Coin<' + this.package + '::wowok::WOWOK>'; };
|
|
221
|
+
COINS_TYPE = () => {
|
|
222
|
+
switch (this.network) {
|
|
223
|
+
case ENTRYPOINT.testnet:
|
|
224
|
+
/*return [
|
|
225
|
+
{name:'SUI', type:'0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI', decimals:9},
|
|
226
|
+
{name:'WOW', type:this.WOWOK_TOKEN_TYPE(), decimals:9},
|
|
227
|
+
];*/
|
|
228
|
+
case ENTRYPOINT.mainnet:
|
|
229
|
+
return [
|
|
230
|
+
{ name: 'SUI', type: '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI', decimals: 9 },
|
|
231
|
+
{ name: 'WOW', type: this.WOWOK_TOKEN_TYPE(), decimals: 9 },
|
|
232
|
+
{ name: 'USDT', type: '0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN', decimals: 6 },
|
|
233
|
+
{ name: 'USDC', type: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN', decimals: 6 },
|
|
234
|
+
{ name: 'WETH', type: '0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN', decimals: 8 },
|
|
235
|
+
{ name: 'WBNB', type: '0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN', decimals: 8 },
|
|
236
|
+
];
|
|
237
|
+
}
|
|
238
|
+
;
|
|
239
|
+
return [];
|
|
240
|
+
};
|
|
214
241
|
static CLOCK_OBJECT = Inputs.SharedObjectRef({
|
|
215
242
|
objectId: "0x6",
|
|
216
243
|
mutable: false,
|
|
@@ -225,6 +252,9 @@ export class Protocol {
|
|
|
225
252
|
return IsValidArray(arr, (v) => {
|
|
226
253
|
if (!v)
|
|
227
254
|
return false;
|
|
255
|
+
if (typeof (v) === 'string' && !isValidSuiObjectId(v)) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
228
258
|
return true;
|
|
229
259
|
});
|
|
230
260
|
};
|
package/dist/repository.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,SAAS,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAC9I,OAAO,EAAE,mBAAmB,EAAc,MAAM,cAAc,CAAA;AAK9D,oBAAY,sBAAsB;IAC9B,gBAAgB,IAAI;IACpB,kBAAkB,IAAI;CACzB;AACD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,EAAC,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC;CACxB,CAAA;AAED,qBAAa,UAAU;IACnB,SAAS,CAAC,UAAU,mBAAE;IACtB,SAAS,CAAC,MAAM,EAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,WAAC;IAEnB,UAAU;IACV,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,MAAM,EAAC,SAAS,GAAI,UAAU;IAK1F,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,EACzE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAC,cAAc,GAAI,UAAU;IAyB/E,MAAM,IAAK,iBAAiB;IAO5B,OAAO;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,SAAS,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAC9I,OAAO,EAAE,mBAAmB,EAAc,MAAM,cAAc,CAAA;AAK9D,oBAAY,sBAAsB;IAC9B,gBAAgB,IAAI;IACpB,kBAAkB,IAAI;CACzB;AACD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,EAAC,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC;CACxB,CAAA;AAED,qBAAa,UAAU;IACnB,SAAS,CAAC,UAAU,mBAAE;IACtB,SAAS,CAAC,MAAM,EAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,WAAC;IAEnB,UAAU;IACV,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,MAAM,EAAC,SAAS,GAAI,UAAU;IAK1F,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,EACzE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAC,cAAc,GAAI,UAAU;IAyB/E,MAAM,IAAK,iBAAiB;IAO5B,OAAO;IASP,QAAQ,CAAC,IAAI,EAAC,sBAAsB;IAuCpC,MAAM,CAAC,OAAO,EAAC,MAAM,EAAE,GAAG,EAAC,MAAM;IAkBjC,aAAa,CAAC,UAAU,EAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IA0B3D,gBAAgB,CAAC,UAAU,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IA2ClF,YAAY,CAAC,QAAQ,EAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IAwCnE,eAAe,CAAC,WAAW,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IAyClF,eAAe,CAAC,WAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoB5D,eAAe,CAAC,WAAW,EAAC,sBAAsB,EAAE,QAAQ,CAAC,EAAC,cAAc;IAe5E,sBAAsB,CAAC,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAyBlF,qBAAqB,CAAC,MAAM,EAAC,MAAM,EAAE,gBAAgB,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IA6BvF,iBAAiB,CAAC,cAAc,EAAC,gBAAgB;IAajD,MAAM,CAAC,gBAAgB,SAAQ;IAC/B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,CAAC,gBAAgB,SAAU;IACjC,MAAM,CAAC,WAAW,QAAQ,MAAM,aAE/B;IACD,MAAM,CAAC,YAAY,UAAU,UAAU,aAEtC;CACJ"}
|
package/dist/repository.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BCS } from '@mysten/bcs';
|
|
2
|
-
import { Protocol } from './protocol';
|
|
2
|
+
import { Protocol, ValueType } from './protocol';
|
|
3
3
|
import { Permission } from './permission';
|
|
4
4
|
import { Bcs, array_unique, IsValidDesription, IsValidAddress, IsValidArray, OptionNone, } from './utils';
|
|
5
5
|
import { ERROR, Errors } from './exception';
|
|
@@ -62,16 +62,6 @@ export class Repository {
|
|
|
62
62
|
arguments: [Protocol.TXB_OBJECT(txb, this.object)],
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
/* move to: Entity.mark
|
|
66
|
-
mark(like:'like' | 'unlike', resource:Resource) {
|
|
67
|
-
if (!Protocol.IsValidObjects([this.object])) return false;
|
|
68
|
-
let txb = this.protocol.CurrentSession();
|
|
69
|
-
txb.moveCall({
|
|
70
|
-
target:this.protocol.RepositoryFn(like) as FnCallType,
|
|
71
|
-
arguments: [Protocol.TXB_OBJECT(txb, resource.get_object()), Protocol.TXB_OBJECT(txb, this.object)],
|
|
72
|
-
})
|
|
73
|
-
}
|
|
74
|
-
*/
|
|
75
65
|
add_data(data) {
|
|
76
66
|
if (!Repository.IsValidName(data.key)) {
|
|
77
67
|
ERROR(Errors.IsValidName);
|
|
@@ -212,7 +202,7 @@ export class Repository {
|
|
|
212
202
|
}
|
|
213
203
|
let txb = this.protocol.CurrentSession();
|
|
214
204
|
policies.forEach((policy) => {
|
|
215
|
-
let permission_index = policy?.permission ? txb.pure(Bcs.getInstance().
|
|
205
|
+
let permission_index = policy?.permission ? txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_U64, policy.permission)) : OptionNone(txb);
|
|
216
206
|
if (passport) {
|
|
217
207
|
txb.moveCall({
|
|
218
208
|
target: this.protocol.RepositoryFn('policy_add_with_passport'),
|
|
@@ -254,7 +244,7 @@ export class Repository {
|
|
|
254
244
|
txb.moveCall({
|
|
255
245
|
target: this.protocol.RepositoryFn('policy_remove_with_passport'),
|
|
256
246
|
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object),
|
|
257
|
-
txb.pure(Bcs.getInstance().
|
|
247
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, array_unique(policy_keys))),
|
|
258
248
|
Protocol.TXB_OBJECT(txb, this.permission)]
|
|
259
249
|
});
|
|
260
250
|
}
|
|
@@ -270,7 +260,7 @@ export class Repository {
|
|
|
270
260
|
txb.moveCall({
|
|
271
261
|
target: this.protocol.RepositoryFn('policy_remove'),
|
|
272
262
|
arguments: [Protocol.TXB_OBJECT(txb, this.object),
|
|
273
|
-
txb.pure(Bcs.getInstance().
|
|
263
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, array_unique(policy_keys))),
|
|
274
264
|
Protocol.TXB_OBJECT(txb, this.permission)]
|
|
275
265
|
});
|
|
276
266
|
}
|
|
@@ -343,7 +333,7 @@ export class Repository {
|
|
|
343
333
|
if (!Permission.IsValidPermissionIndex(permission_index)) {
|
|
344
334
|
ERROR(Errors.IsValidPermissionIndex);
|
|
345
335
|
}
|
|
346
|
-
index = txb.pure(Bcs.getInstance().
|
|
336
|
+
index = txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_U64, permission_index));
|
|
347
337
|
}
|
|
348
338
|
if (passport) {
|
|
349
339
|
txb.moveCall({
|
package/dist/service.d.ts
CHANGED
|
@@ -30,10 +30,10 @@ export type Customer_RequiredInfo = {
|
|
|
30
30
|
customer_info_crypt: string[];
|
|
31
31
|
};
|
|
32
32
|
export declare enum BuyRequiredEnum {
|
|
33
|
-
address = "
|
|
34
|
-
phone = "
|
|
35
|
-
name = "
|
|
36
|
-
postcode = "
|
|
33
|
+
address = "Address",
|
|
34
|
+
phone = "Phone",
|
|
35
|
+
name = "Name",
|
|
36
|
+
postcode = "Postcode"
|
|
37
37
|
}
|
|
38
38
|
export type Service_Buy = {
|
|
39
39
|
item: string;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAC/G,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAC9E,SAAS,EAAC,MAAM,YAAY,CAAC;AAIjC,MAAM,MAAM,qBAAqB,GAAG;IAChC,KAAK,EAAC,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAC,MAAM,CAAC;IACZ,KAAK,EAAC,MAAM,CAAC;IACb,KAAK,EAAC,MAAM,CAAC;CAChB,CAAA;AACD,oBAAY,qBAAqB;IAC7B,KAAK,IAAI;IACT,KAAK,IAAI;CACZ;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CACjC,CAAA;AACD,oBAAY,eAAe;IACvB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;CACxB;AACD,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,CAAC;CAC9B,CAAA;AAED,qBAAa,OAAO;IAChB,SAAS,CAAC,cAAc,SAAC;IACzB,SAAS,CAAC,UAAU,mBAAC;IACrB,SAAS,CAAC,MAAM,EAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,QAAQ,WAAC;IAEnB,YAAY;IACZ,UAAU;IACV,OAAO;IAMP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,EAAE,UAAU,EAAC,gBAAgB,EAAE,MAAM,EAAC,SAAS,GAAI,OAAO;IAK/G,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,EAAE,UAAU,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,EACjG,aAAa,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc,GAAI,OAAO;IAsC/E,MAAM,IAAK,cAAc;IAQzB,OAAO;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BCS } from '@mysten/bcs';
|
|
2
2
|
import { IsValidArray, IsValidPercent, IsValidName_AllowEmpty, Bcs, array_unique, IsValidArgType, IsValidDesription, IsValidAddress, IsValidEndpoint, OptionNone, IsValidUint, IsValidInt, IsValidName, } from './utils';
|
|
3
|
-
import { Protocol } from './protocol';
|
|
3
|
+
import { Protocol, ValueType } from './protocol';
|
|
4
4
|
import { ERROR, Errors } from './exception';
|
|
5
5
|
export var Service_Discount_Type;
|
|
6
6
|
(function (Service_Discount_Type) {
|
|
@@ -9,10 +9,10 @@ export var Service_Discount_Type;
|
|
|
9
9
|
})(Service_Discount_Type || (Service_Discount_Type = {}));
|
|
10
10
|
export var BuyRequiredEnum;
|
|
11
11
|
(function (BuyRequiredEnum) {
|
|
12
|
-
BuyRequiredEnum["address"] = "
|
|
13
|
-
BuyRequiredEnum["phone"] = "
|
|
14
|
-
BuyRequiredEnum["name"] = "
|
|
15
|
-
BuyRequiredEnum["postcode"] = "
|
|
12
|
+
BuyRequiredEnum["address"] = "Address";
|
|
13
|
+
BuyRequiredEnum["phone"] = "Phone";
|
|
14
|
+
BuyRequiredEnum["name"] = "Name";
|
|
15
|
+
BuyRequiredEnum["postcode"] = "Postcode";
|
|
16
16
|
})(BuyRequiredEnum || (BuyRequiredEnum = {}));
|
|
17
17
|
export class Service {
|
|
18
18
|
pay_token_type;
|
|
@@ -50,7 +50,7 @@ export class Service {
|
|
|
50
50
|
}
|
|
51
51
|
let s = new Service(protocol, pay_token_type, permission);
|
|
52
52
|
let txb = protocol.CurrentSession();
|
|
53
|
-
let ep = endpoint ? txb.pure(Bcs.getInstance().
|
|
53
|
+
let ep = endpoint ? txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_STRING, endpoint)) : OptionNone(txb);
|
|
54
54
|
if (passport) {
|
|
55
55
|
s.object = txb.moveCall({
|
|
56
56
|
target: protocol.ServiceFn('new_with_passport'),
|
|
@@ -83,16 +83,6 @@ export class Service {
|
|
|
83
83
|
typeArguments: [this.pay_token_type]
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
/* move to: Entity.mark
|
|
87
|
-
mark(like:'like' | 'unlike', resource:Resource) {
|
|
88
|
-
let txb = this.protocol.CurrentSession();
|
|
89
|
-
txb.moveCall({
|
|
90
|
-
target:this.protocol.ServiceFn(like) as FnCallType,
|
|
91
|
-
arguments: [Protocol.TXB_OBJECT(txb, resource.get_object()), Protocol.TXB_OBJECT(txb, this.object)],
|
|
92
|
-
typeArguments:[this.pay_token_type]
|
|
93
|
-
})
|
|
94
|
-
}
|
|
95
|
-
*/
|
|
96
86
|
set_description(description, passport) {
|
|
97
87
|
if (!IsValidDesription(description)) {
|
|
98
88
|
ERROR(Errors.IsValidDesription);
|
|
@@ -477,8 +467,8 @@ export class Service {
|
|
|
477
467
|
if (passport) {
|
|
478
468
|
txb.moveCall({
|
|
479
469
|
target: this.protocol.ServiceFn('sales_add_with_passport'),
|
|
480
|
-
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
481
|
-
txb.pure(Bcs.getInstance().
|
|
470
|
+
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, names)),
|
|
471
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
482
472
|
Protocol.TXB_OBJECT(txb, this.permission)],
|
|
483
473
|
typeArguments: [this.pay_token_type]
|
|
484
474
|
});
|
|
@@ -486,8 +476,8 @@ export class Service {
|
|
|
486
476
|
else {
|
|
487
477
|
txb.moveCall({
|
|
488
478
|
target: this.protocol.ServiceFn('sales_add'),
|
|
489
|
-
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
490
|
-
txb.pure(Bcs.getInstance().
|
|
479
|
+
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, names)),
|
|
480
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
491
481
|
Protocol.TXB_OBJECT(txb, this.permission)],
|
|
492
482
|
typeArguments: [this.pay_token_type]
|
|
493
483
|
});
|
|
@@ -512,7 +502,7 @@ export class Service {
|
|
|
512
502
|
else {
|
|
513
503
|
txb.moveCall({
|
|
514
504
|
target: this.protocol.ServiceFn('sales_remove_with_passport'),
|
|
515
|
-
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
505
|
+
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, array_unique(sales))),
|
|
516
506
|
Protocol.TXB_OBJECT(txb, this.permission)],
|
|
517
507
|
typeArguments: [this.pay_token_type]
|
|
518
508
|
});
|
|
@@ -529,7 +519,7 @@ export class Service {
|
|
|
529
519
|
else {
|
|
530
520
|
txb.moveCall({
|
|
531
521
|
target: this.protocol.ServiceFn('sales_remove'),
|
|
532
|
-
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
522
|
+
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, array_unique(sales))),
|
|
533
523
|
Protocol.TXB_OBJECT(txb, this.permission)],
|
|
534
524
|
typeArguments: [this.pay_token_type]
|
|
535
525
|
});
|
|
@@ -563,9 +553,9 @@ export class Service {
|
|
|
563
553
|
let txb = this.protocol.CurrentSession();
|
|
564
554
|
discount_dispatch.forEach((discount) => {
|
|
565
555
|
let price_greater = discount.discount?.price_greater ?
|
|
566
|
-
txb.pure(Bcs.getInstance().
|
|
556
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_U64, discount.discount.price_greater)) : OptionNone(txb);
|
|
567
557
|
let time_start = discount.discount?.time_start ?
|
|
568
|
-
txb.pure(Bcs.getInstance().
|
|
558
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_U64, discount.discount.time_start)) : OptionNone(txb);
|
|
569
559
|
if (passport) {
|
|
570
560
|
txb.moveCall({
|
|
571
561
|
target: this.protocol.ServiceFn('dicscount_create_with_passport'),
|
|
@@ -686,7 +676,7 @@ export class Service {
|
|
|
686
676
|
ERROR(Errors.IsValidEndpoint);
|
|
687
677
|
}
|
|
688
678
|
let txb = this.protocol.CurrentSession();
|
|
689
|
-
let ep = endpoint ? txb.pure(Bcs.getInstance().
|
|
679
|
+
let ep = endpoint ? txb.pure(Bcs.getInstance().ser(ValueType.TYPE_OPTION_STRING, endpoint)) : OptionNone(txb);
|
|
690
680
|
if (passport) {
|
|
691
681
|
txb.moveCall({
|
|
692
682
|
target: this.protocol.ServiceFn('endpoint_set_with_passport'),
|
|
@@ -748,7 +738,7 @@ export class Service {
|
|
|
748
738
|
txb.moveCall({
|
|
749
739
|
target: this.protocol.ServiceFn('required_set_with_passport'),
|
|
750
740
|
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object),
|
|
751
|
-
txb.pure(Bcs.getInstance().
|
|
741
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_VEC_U8, array_unique(customer_required))),
|
|
752
742
|
txb.pure(pubkey, 'vector<u8>'), Protocol.TXB_OBJECT(txb, this.permission)],
|
|
753
743
|
typeArguments: [this.pay_token_type]
|
|
754
744
|
});
|
|
@@ -757,7 +747,7 @@ export class Service {
|
|
|
757
747
|
txb.moveCall({
|
|
758
748
|
target: this.protocol.ServiceFn('required_set'),
|
|
759
749
|
arguments: [Protocol.TXB_OBJECT(txb, this.object),
|
|
760
|
-
txb.pure(Bcs.getInstance().
|
|
750
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_VEC_U8, array_unique(customer_required))),
|
|
761
751
|
txb.pure(pubkey, 'vector<u8>'), Protocol.TXB_OBJECT(txb, this.permission)],
|
|
762
752
|
typeArguments: [this.pay_token_type]
|
|
763
753
|
});
|
|
@@ -877,7 +867,7 @@ export class Service {
|
|
|
877
867
|
arguments: [Protocol.TXB_OBJECT(txb, this.object), Protocol.TXB_OBJECT(txb, order),
|
|
878
868
|
txb.pure(customer_info_crypto.pubkey, 'vector<u8>'),
|
|
879
869
|
txb.pure(customer_info_crypto.customer_pubkey, 'vector<u8>'),
|
|
880
|
-
txb.pure(Bcs.getInstance().
|
|
870
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_VEC_U8, array_unique(customer_info_crypto.customer_info_crypt)))],
|
|
881
871
|
typeArguments: [this.pay_token_type]
|
|
882
872
|
});
|
|
883
873
|
}
|
|
@@ -911,8 +901,8 @@ export class Service {
|
|
|
911
901
|
if (discount) {
|
|
912
902
|
order = txb.moveCall({
|
|
913
903
|
target: this.protocol.ServiceFn('dicount_buy_with_passport'),
|
|
914
|
-
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
915
|
-
txb.pure(Bcs.getInstance().
|
|
904
|
+
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, name)),
|
|
905
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
916
906
|
Protocol.TXB_OBJECT(txb, coin), Protocol.TXB_OBJECT(txb, discount), txb.object(Protocol.CLOCK_OBJECT)],
|
|
917
907
|
typeArguments: [this.pay_token_type]
|
|
918
908
|
});
|
|
@@ -920,9 +910,9 @@ export class Service {
|
|
|
920
910
|
else {
|
|
921
911
|
order = txb.moveCall({
|
|
922
912
|
target: this.protocol.ServiceFn('buy_with_passport'),
|
|
923
|
-
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
924
|
-
txb.pure(Bcs.getInstance().
|
|
925
|
-
txb.pure(Bcs.getInstance().
|
|
913
|
+
arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, name)),
|
|
914
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)),
|
|
915
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
926
916
|
Protocol.TXB_OBJECT(txb, coin)],
|
|
927
917
|
typeArguments: [this.pay_token_type]
|
|
928
918
|
});
|
|
@@ -932,9 +922,9 @@ export class Service {
|
|
|
932
922
|
if (discount) {
|
|
933
923
|
order = txb.moveCall({
|
|
934
924
|
target: this.protocol.ServiceFn('disoucnt_buy'),
|
|
935
|
-
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
936
|
-
txb.pure(Bcs.getInstance().
|
|
937
|
-
txb.pure(Bcs.getInstance().
|
|
925
|
+
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, name)),
|
|
926
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)),
|
|
927
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
938
928
|
Protocol.TXB_OBJECT(txb, coin),
|
|
939
929
|
Protocol.TXB_OBJECT(txb, discount), txb.object(Protocol.CLOCK_OBJECT)],
|
|
940
930
|
typeArguments: [this.pay_token_type]
|
|
@@ -943,9 +933,9 @@ export class Service {
|
|
|
943
933
|
else {
|
|
944
934
|
order = txb.moveCall({
|
|
945
935
|
target: this.protocol.ServiceFn('buy'),
|
|
946
|
-
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().
|
|
947
|
-
txb.pure(Bcs.getInstance().
|
|
948
|
-
txb.pure(Bcs.getInstance().
|
|
936
|
+
arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_STRING, name)),
|
|
937
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, price)),
|
|
938
|
+
txb.pure(Bcs.getInstance().ser(ValueType.TYPE_VEC_U64, stock)),
|
|
949
939
|
Protocol.TXB_OBJECT(txb, coin)],
|
|
950
940
|
typeArguments: [this.pay_token_type]
|
|
951
941
|
});
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { BCS
|
|
1
|
+
import { BCS } from '@mysten/bcs';
|
|
2
2
|
import { TransactionBlock, TransactionArgument } from '@mysten/sui.js/transactions';
|
|
3
|
+
import { ValueType } from './protocol';
|
|
3
4
|
export declare const OPTION_NONE = 0;
|
|
4
|
-
export declare const readOption: (arr: number[], de:
|
|
5
|
+
export declare const readOption: (arr: number[], de: ValueType) => {
|
|
6
|
+
bNone: boolean;
|
|
7
|
+
value: any;
|
|
8
|
+
};
|
|
9
|
+
export declare const readOptionString: (arr: number[]) => {
|
|
5
10
|
bNone: boolean;
|
|
6
11
|
value: any;
|
|
7
12
|
};
|
|
@@ -24,25 +29,8 @@ export declare class Bcs {
|
|
|
24
29
|
private static _instance;
|
|
25
30
|
private constructor();
|
|
26
31
|
static getInstance(): Bcs;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ser_option_address(data: string): Uint8Array;
|
|
30
|
-
ser_vector_string(data: string[]): Uint8Array;
|
|
31
|
-
ser_vector_vector_u8(data: string[]): Uint8Array;
|
|
32
|
-
ser_vector_u64(data: number[]): Uint8Array;
|
|
33
|
-
ser_vector_u8(data: number[]): Uint8Array;
|
|
34
|
-
ser_vector_address(data: number[]): Uint8Array;
|
|
35
|
-
ser_vector_bool(data: number[]): Uint8Array;
|
|
36
|
-
ser_vector_u128(data: number[]): Uint8Array;
|
|
37
|
-
ser_address(data: string): Uint8Array;
|
|
38
|
-
ser_bool(data: boolean): Uint8Array;
|
|
39
|
-
ser_u8(data: number): Uint8Array;
|
|
40
|
-
ser_u64(data: number): Uint8Array;
|
|
41
|
-
ser_u128(data: number): Uint8Array;
|
|
42
|
-
ser_u256(data: number): Uint8Array;
|
|
43
|
-
ser_string(data: string): Uint8Array;
|
|
44
|
-
ser(type: TypeName | StructTypeDefinition, data: Uint8Array): Uint8Array;
|
|
45
|
-
de(type: TypeName | StructTypeDefinition, data: Uint8Array): any;
|
|
32
|
+
ser(type: ValueType, data: Uint8Array | any): Uint8Array;
|
|
33
|
+
de(type: ValueType, data: Uint8Array | any): any;
|
|
46
34
|
}
|
|
47
35
|
export declare function stringToUint8Array(str: string): Uint8Array;
|
|
48
36
|
export declare function numToUint8Array(num: number): Uint8Array;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { BCS, getSuiMoveConfig } from '@mysten/bcs';
|
|
2
2
|
import { ERROR, Errors } from './exception';
|
|
3
|
+
import { isValidSuiAddress } from '@mysten/sui.js/utils';
|
|
4
|
+
import { ValueType } from './protocol';
|
|
3
5
|
export const OPTION_NONE = 0;
|
|
4
6
|
export const readOption = (arr, de) => {
|
|
5
7
|
let o = arr.splice(0, 1);
|
|
@@ -14,6 +16,22 @@ export const readOption = (arr, de) => {
|
|
|
14
16
|
return { bNone: true, value: OPTION_NONE };
|
|
15
17
|
}
|
|
16
18
|
};
|
|
19
|
+
export const readOptionString = (arr) => {
|
|
20
|
+
let o = arr.splice(0, 1);
|
|
21
|
+
if (o[0] == 1) { // true
|
|
22
|
+
let r = ulebDecode(Uint8Array.from(arr));
|
|
23
|
+
let value = Bcs.getInstance().de(ValueType.TYPE_STRING, Uint8Array.from(arr));
|
|
24
|
+
arr.splice(0, r.value + r.length);
|
|
25
|
+
return { bNone: false, value: value };
|
|
26
|
+
}
|
|
27
|
+
else if (o[0] == 0) {
|
|
28
|
+
return { bNone: true, value: OPTION_NONE };
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
ERROR(Errors.Fail, 'readOption: option invalid');
|
|
32
|
+
return { bNone: true, value: OPTION_NONE };
|
|
33
|
+
}
|
|
34
|
+
};
|
|
17
35
|
export const ulebDecode = (arr) => {
|
|
18
36
|
let total = 0;
|
|
19
37
|
let shift = 0;
|
|
@@ -112,62 +130,106 @@ export class Bcs {
|
|
|
112
130
|
;
|
|
113
131
|
return Bcs._instance;
|
|
114
132
|
}
|
|
115
|
-
ser_option_string(data) {
|
|
116
|
-
return this.bcs.ser('Option<string>', { 'some': data }).toBytes();
|
|
117
|
-
}
|
|
118
|
-
ser_option_u64(data) {
|
|
119
|
-
return this.bcs.ser('Option<u64>', { 'some': data }).toBytes();
|
|
120
|
-
}
|
|
121
|
-
ser_option_address(data) {
|
|
122
|
-
return this.bcs.ser('Option<address>', { 'some': data }).toBytes();
|
|
123
|
-
}
|
|
124
|
-
ser_vector_string(data) {
|
|
125
|
-
return this.bcs.ser('vector<string>', data).toBytes();
|
|
126
|
-
}
|
|
127
|
-
ser_vector_vector_u8(data) {
|
|
128
|
-
return this.bcs.ser('vector<vector<u8>>', data).toBytes();
|
|
129
|
-
}
|
|
130
|
-
ser_vector_u64(data) {
|
|
131
|
-
return this.bcs.ser('vector<u64>', data).toBytes();
|
|
132
|
-
}
|
|
133
|
-
ser_vector_u8(data) {
|
|
134
|
-
return this.bcs.ser('vector<u8>', data).toBytes();
|
|
135
|
-
}
|
|
136
|
-
ser_vector_address(data) {
|
|
137
|
-
return this.bcs.ser('vector<address>', data).toBytes();
|
|
138
|
-
}
|
|
139
|
-
ser_vector_bool(data) {
|
|
140
|
-
return this.bcs.ser('vector<bool>', data).toBytes();
|
|
141
|
-
}
|
|
142
|
-
ser_vector_u128(data) {
|
|
143
|
-
return this.bcs.ser('vector<u128>', data).toBytes();
|
|
144
|
-
}
|
|
145
|
-
ser_address(data) {
|
|
146
|
-
return this.bcs.ser(BCS.ADDRESS, data).toBytes();
|
|
147
|
-
}
|
|
148
|
-
ser_bool(data) {
|
|
149
|
-
return this.bcs.ser(BCS.BOOL, data).toBytes();
|
|
150
|
-
}
|
|
151
|
-
ser_u8(data) {
|
|
152
|
-
return this.bcs.ser(BCS.U8, data).toBytes();
|
|
153
|
-
}
|
|
154
|
-
ser_u64(data) {
|
|
155
|
-
return this.bcs.ser(BCS.U64, data).toBytes();
|
|
156
|
-
}
|
|
157
|
-
ser_u128(data) {
|
|
158
|
-
return this.bcs.ser(BCS.U128, data).toBytes();
|
|
159
|
-
}
|
|
160
|
-
ser_u256(data) {
|
|
161
|
-
return this.bcs.ser(BCS.U256, data).toBytes();
|
|
162
|
-
}
|
|
163
|
-
ser_string(data) {
|
|
164
|
-
return this.bcs.ser(BCS.STRING, data).toBytes();
|
|
165
|
-
}
|
|
166
133
|
ser(type, data) {
|
|
167
|
-
|
|
134
|
+
switch (type) {
|
|
135
|
+
case ValueType.TYPE_BOOL:
|
|
136
|
+
return this.bcs.ser(BCS.BOOL, data).toBytes();
|
|
137
|
+
case ValueType.TYPE_ADDRESS:
|
|
138
|
+
return this.bcs.ser(BCS.ADDRESS, data).toBytes();
|
|
139
|
+
case ValueType.TYPE_U64:
|
|
140
|
+
return this.bcs.ser(BCS.U64, data).toBytes();
|
|
141
|
+
case ValueType.TYPE_U8:
|
|
142
|
+
return this.bcs.ser(BCS.U8, data).toBytes();
|
|
143
|
+
case ValueType.TYPE_VEC_U8:
|
|
144
|
+
return this.bcs.ser('vector<u8>', data).toBytes();
|
|
145
|
+
case ValueType.TYPE_U128:
|
|
146
|
+
return this.bcs.ser(BCS.U128, data).toBytes();
|
|
147
|
+
case ValueType.TYPE_VEC_ADDRESS:
|
|
148
|
+
return this.bcs.ser('vector<address>', data).toBytes();
|
|
149
|
+
case ValueType.TYPE_VEC_BOOL:
|
|
150
|
+
return this.bcs.ser('vector<bool>', data).toBytes();
|
|
151
|
+
case ValueType.TYPE_VEC_VEC_U8:
|
|
152
|
+
return this.bcs.ser('vector<vector<u8>>', data).toBytes();
|
|
153
|
+
case ValueType.TYPE_VEC_U64:
|
|
154
|
+
return this.bcs.ser('vector<u64>', data).toBytes();
|
|
155
|
+
case ValueType.TYPE_VEC_U128:
|
|
156
|
+
return this.bcs.ser('vector<u128>', data).toBytes();
|
|
157
|
+
case ValueType.TYPE_OPTION_ADDRESS:
|
|
158
|
+
return this.bcs.ser('Option<address>', { 'some': data }).toBytes();
|
|
159
|
+
case ValueType.TYPE_OPTION_BOOL:
|
|
160
|
+
return this.bcs.ser('Option<bool>', { 'some': data }).toBytes();
|
|
161
|
+
case ValueType.TYPE_OPTION_U8:
|
|
162
|
+
return this.bcs.ser('Option<u8>', { 'some': data }).toBytes();
|
|
163
|
+
case ValueType.TYPE_OPTION_U64:
|
|
164
|
+
return this.bcs.ser('Option<u64>', { 'some': data }).toBytes();
|
|
165
|
+
case ValueType.TYPE_OPTION_U128:
|
|
166
|
+
return this.bcs.ser('Option<u128>', { 'some': data }).toBytes();
|
|
167
|
+
case ValueType.TYPE_OPTION_U256:
|
|
168
|
+
return this.bcs.ser('Option<u256>', { 'some': data }).toBytes();
|
|
169
|
+
case ValueType.TYPE_OPTION_STRING:
|
|
170
|
+
return this.bcs.ser('Option<string>', { 'some': data }).toBytes();
|
|
171
|
+
case ValueType.TYPE_VEC_U256:
|
|
172
|
+
return this.bcs.ser('vector<u256>', data).toBytes();
|
|
173
|
+
case ValueType.TYPE_U256:
|
|
174
|
+
return this.bcs.ser(BCS.U256, data).toBytes();
|
|
175
|
+
case ValueType.TYPE_STRING:
|
|
176
|
+
return this.bcs.ser(BCS.STRING, data).toBytes();
|
|
177
|
+
case ValueType.TYPE_VEC_STRING:
|
|
178
|
+
return this.bcs.ser('vector<string>', data).toBytes();
|
|
179
|
+
default:
|
|
180
|
+
ERROR(Errors.bcsTypeInvalid, 'ser');
|
|
181
|
+
}
|
|
182
|
+
return new Uint8Array();
|
|
168
183
|
}
|
|
169
184
|
de(type, data) {
|
|
170
|
-
|
|
185
|
+
switch (type) {
|
|
186
|
+
case ValueType.TYPE_BOOL:
|
|
187
|
+
return this.bcs.de(BCS.BOOL, data).toBytes();
|
|
188
|
+
case ValueType.TYPE_ADDRESS:
|
|
189
|
+
return this.bcs.de(BCS.ADDRESS, data).toBytes();
|
|
190
|
+
case ValueType.TYPE_U64:
|
|
191
|
+
return this.bcs.de(BCS.U64, data).toBytes();
|
|
192
|
+
case ValueType.TYPE_U8:
|
|
193
|
+
return this.bcs.de(BCS.U8, data).toBytes();
|
|
194
|
+
case ValueType.TYPE_VEC_U8:
|
|
195
|
+
return this.bcs.de('vector<u8>', data).toBytes();
|
|
196
|
+
case ValueType.TYPE_U128:
|
|
197
|
+
return this.bcs.de(BCS.U128, data).toBytes();
|
|
198
|
+
case ValueType.TYPE_VEC_ADDRESS:
|
|
199
|
+
return this.bcs.de('vector<address>', data).toBytes();
|
|
200
|
+
case ValueType.TYPE_VEC_BOOL:
|
|
201
|
+
return this.bcs.de('vector<bool>', data).toBytes();
|
|
202
|
+
case ValueType.TYPE_VEC_VEC_U8:
|
|
203
|
+
return this.bcs.de('vector<vector<u8>>', data).toBytes();
|
|
204
|
+
case ValueType.TYPE_VEC_U64:
|
|
205
|
+
return this.bcs.de('vector<u64>', data).toBytes();
|
|
206
|
+
case ValueType.TYPE_VEC_U128:
|
|
207
|
+
return this.bcs.de('vector<u128>', data).toBytes();
|
|
208
|
+
case ValueType.TYPE_OPTION_ADDRESS:
|
|
209
|
+
return this.bcs.de('Option<address>', data).toBytes();
|
|
210
|
+
case ValueType.TYPE_OPTION_BOOL:
|
|
211
|
+
return this.bcs.de('Option<bool>', data).toBytes();
|
|
212
|
+
case ValueType.TYPE_OPTION_U8:
|
|
213
|
+
return this.bcs.de('Option<u8>', data).toBytes();
|
|
214
|
+
case ValueType.TYPE_OPTION_U64:
|
|
215
|
+
return this.bcs.de('Option<u64>', data).toBytes();
|
|
216
|
+
case ValueType.TYPE_OPTION_U128:
|
|
217
|
+
return this.bcs.de('Option<u128>', data).toBytes();
|
|
218
|
+
case ValueType.TYPE_OPTION_U256:
|
|
219
|
+
return this.bcs.de('Option<u256>', data).toBytes();
|
|
220
|
+
case ValueType.TYPE_OPTION_STRING:
|
|
221
|
+
return this.bcs.de('Option<string>', data).toBytes();
|
|
222
|
+
case ValueType.TYPE_VEC_U256:
|
|
223
|
+
return this.bcs.de('vector<u256>', data).toBytes();
|
|
224
|
+
case ValueType.TYPE_STRING:
|
|
225
|
+
return this.bcs.de(BCS.STRING, data).toBytes();
|
|
226
|
+
case ValueType.TYPE_VEC_STRING:
|
|
227
|
+
return this.bcs.de('vector<string>', data).toBytes();
|
|
228
|
+
case ValueType.TYPE_U256:
|
|
229
|
+
return this.bcs.de(BCS.U256, data).toBytes();
|
|
230
|
+
default:
|
|
231
|
+
ERROR(Errors.bcsTypeInvalid, 'de');
|
|
232
|
+
}
|
|
171
233
|
}
|
|
172
234
|
}
|
|
173
235
|
export function stringToUint8Array(str) {
|
|
@@ -219,7 +281,7 @@ export const IsValidName = (name) => { if (!name)
|
|
|
219
281
|
export const IsValidName_AllowEmpty = (name) => { return name.length <= MAX_NAME_LENGTH; };
|
|
220
282
|
export const IsValidEndpoint = (endpoint) => { if (!endpoint)
|
|
221
283
|
return false; return endpoint.length <= MAX_ENDPOINT_LENGTH; };
|
|
222
|
-
export const IsValidAddress = (addr) => { if (!addr)
|
|
284
|
+
export const IsValidAddress = (addr) => { if (!addr || !isValidSuiAddress(addr))
|
|
223
285
|
return false; return true; };
|
|
224
286
|
export const IsValidArgType = (argType) => { if (!argType)
|
|
225
287
|
return false; return argType.length != 0; };
|