phantasma-sdk-ts 0.2.0-rc.10 → 0.2.0-rc.12
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/core/types/Carbon/Blockchain/Modules/Builders/NftRomBuilder.d.ts +2 -2
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/NftRomBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/NftRomBuilder.js +13 -12
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/SeriesInfoBuilder.d.ts +2 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/SeriesInfoBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/SeriesInfoBuilder.js +2 -3
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/StandardMetadataHelper.d.ts +3 -0
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/StandardMetadataHelper.d.ts.map +1 -0
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/StandardMetadataHelper.js +28 -0
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenInfoBuilder.d.ts +2 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenInfoBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenInfoBuilder.js +10 -2
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenMetadataBuilder.d.ts +4 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenMetadataBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenMetadataBuilder.js +36 -0
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSchemasBuilder.d.ts +30 -3
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSchemasBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSchemasBuilder.js +182 -27
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.d.ts +2 -2
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.js +12 -8
- package/dist/core/types/Carbon/Blockchain/Vm/VmType.d.ts +1 -0
- package/dist/core/types/Carbon/Blockchain/Vm/VmType.d.ts.map +1 -1
- package/dist/core/types/Carbon/Blockchain/Vm/VmType.js +36 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VmStructSchema } from '../../Vm';
|
|
2
2
|
export declare class NftRomBuilder {
|
|
3
|
-
static buildAndSerialize(phantasmaNftId: bigint, name
|
|
3
|
+
static buildAndSerialize(nftRomSchema: VmStructSchema, phantasmaNftId: bigint, name?: string, description?: string, imageURL?: string, infoURL?: string, royalties?: number, rom?: Uint8Array): Uint8Array;
|
|
4
4
|
}
|
|
5
5
|
//# sourceMappingURL=NftRomBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NftRomBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/NftRomBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NftRomBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/NftRomBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,cAAc,EAAU,MAAM,UAAU,CAAC;AAK3F,qBAAa,aAAa;IACxB,MAAM,CAAC,iBAAiB,CACtB,YAAY,EAAE,cAAc,EAC5B,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,UAAU,GACf,UAAU;CAyBd"}
|
|
@@ -4,22 +4,23 @@ exports.NftRomBuilder = void 0;
|
|
|
4
4
|
const CarbonSerialization_1 = require("../../../../CarbonSerialization");
|
|
5
5
|
const Vm_1 = require("../../Vm");
|
|
6
6
|
const StandardMeta_1 = require("../StandardMeta");
|
|
7
|
-
const
|
|
7
|
+
const StandardMetadataHelper_1 = require("./StandardMetadataHelper");
|
|
8
8
|
class NftRomBuilder {
|
|
9
|
-
static buildAndSerialize(phantasmaNftId, name, description, imageURL, infoURL, royalties, rom
|
|
10
|
-
tokenSchemas = tokenSchemas || TokenSchemasBuilder_1.TokenSchemasBuilder.prepareStandardTokenSchemas();
|
|
9
|
+
static buildAndSerialize(nftRomSchema, phantasmaNftId, name, description, imageURL, infoURL, royalties, rom) {
|
|
11
10
|
const wRom = new CarbonSerialization_1.CarbonBinaryWriter();
|
|
12
|
-
const
|
|
13
|
-
|
|
11
|
+
const nftRom = new Vm_1.VmDynamicStruct();
|
|
12
|
+
nftRom.fields = [
|
|
14
13
|
Vm_1.VmNamedDynamicVariable.from(StandardMeta_1.StandardMeta.id, Vm_1.VmType.Int256, phantasmaNftId),
|
|
15
|
-
Vm_1.VmNamedDynamicVariable.from('
|
|
16
|
-
Vm_1.VmNamedDynamicVariable.from('description', Vm_1.VmType.String, description),
|
|
17
|
-
Vm_1.VmNamedDynamicVariable.from('imageURL', Vm_1.VmType.String, imageURL),
|
|
18
|
-
Vm_1.VmNamedDynamicVariable.from('infoURL', Vm_1.VmType.String, infoURL),
|
|
19
|
-
Vm_1.VmNamedDynamicVariable.from('royalties', Vm_1.VmType.Int32, royalties),
|
|
20
|
-
Vm_1.VmNamedDynamicVariable.from('rom', Vm_1.VmType.Bytes, rom),
|
|
14
|
+
Vm_1.VmNamedDynamicVariable.from('rom', Vm_1.VmType.Bytes, rom ? rom : [])
|
|
21
15
|
];
|
|
22
|
-
|
|
16
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(nftRom, nftRomSchema, 'name', Vm_1.VmType.String, name);
|
|
17
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(nftRom, nftRomSchema, 'description', Vm_1.VmType.String, description);
|
|
18
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(nftRom, nftRomSchema, 'imageURL', Vm_1.VmType.String, imageURL);
|
|
19
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(nftRom, nftRomSchema, 'infoURL', Vm_1.VmType.String, infoURL);
|
|
20
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(nftRom, nftRomSchema, 'royalties', Vm_1.VmType.Int32, royalties);
|
|
21
|
+
nftRom.writeWithSchema(nftRomSchema, wRom);
|
|
22
|
+
// console.log("nftRom.fields.length: ", nftRom.fields.length);
|
|
23
|
+
// TokenSchemasBuilder.logSchema(nftRomSchema);
|
|
23
24
|
return wRom.toUint8Array();
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Bytes32 } from '../../../Bytes32';
|
|
2
|
+
import { VmStructSchema } from '../../Vm';
|
|
2
3
|
import { SeriesInfo } from '../SeriesInfo';
|
|
3
4
|
export declare class SeriesInfoBuilder {
|
|
4
|
-
static build(phantasmaSeriesId: bigint, maxMint: number, maxSupply: number, ownerPublicKey: Bytes32,
|
|
5
|
+
static build(seriesSchema: VmStructSchema, phantasmaSeriesId: bigint, maxMint: number, maxSupply: number, ownerPublicKey: Bytes32, sharedName?: string, sharedDescription?: string, sharedImageURL?: string, sharedInfoURL?: string, sharedRoyalties?: number, sharedRom?: Uint8Array): SeriesInfo;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=SeriesInfoBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeriesInfoBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/SeriesInfoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SeriesInfoBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/SeriesInfoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,KAAK,CACV,YAAY,EAAE,cAAc,EAC5B,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,UAAU,GACrB,UAAU;CAqBd"}
|
|
@@ -5,9 +5,8 @@ const Vm_1 = require("../../Vm");
|
|
|
5
5
|
const SeriesInfo_1 = require("../SeriesInfo");
|
|
6
6
|
const TokenSeriesMetadataBuilder_1 = require("./TokenSeriesMetadataBuilder");
|
|
7
7
|
class SeriesInfoBuilder {
|
|
8
|
-
static build(phantasmaSeriesId, maxMint, maxSupply, ownerPublicKey,
|
|
9
|
-
metadata =
|
|
10
|
-
metadata || TokenSeriesMetadataBuilder_1.TokenSeriesMetadataBuilder.buildAndSerialize(phantasmaSeriesId, sharedRom, null);
|
|
8
|
+
static build(seriesSchema, phantasmaSeriesId, maxMint, maxSupply, ownerPublicKey, sharedName, sharedDescription, sharedImageURL, sharedInfoURL, sharedRoyalties, sharedRom) {
|
|
9
|
+
const metadata = TokenSeriesMetadataBuilder_1.TokenSeriesMetadataBuilder.buildAndSerialize(seriesSchema, phantasmaSeriesId, sharedName, sharedDescription, sharedImageURL, sharedInfoURL, sharedRoyalties, sharedRom);
|
|
11
10
|
return new SeriesInfo_1.SeriesInfo({
|
|
12
11
|
maxMint: maxMint,
|
|
13
12
|
maxSupply: maxSupply,
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { VmDynamicStruct, VmStructSchema, VmType } from "../../Vm";
|
|
2
|
+
export declare function pushStandardMetadataField(metadata: VmDynamicStruct, schema: VmStructSchema, name: string, type: VmType, value: string | number | null | undefined): void;
|
|
3
|
+
//# sourceMappingURL=StandardMetadataHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandardMetadataHelper.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/StandardMetadataHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,cAAc,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3F,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,QAkBjK"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pushStandardMetadataField = void 0;
|
|
4
|
+
const Vm_1 = require("../../Vm");
|
|
5
|
+
function pushStandardMetadataField(metadata, schema, name, type, value) {
|
|
6
|
+
if (typeof value === "undefined" || value === null) {
|
|
7
|
+
if (schema.fields.some(f => f.name.data === name)) {
|
|
8
|
+
throw Error(`Metadata field '${name}' is mandatory`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
else if (type === Vm_1.VmType.String && typeof value === "string") {
|
|
12
|
+
if (value && value.trim().length != 0) {
|
|
13
|
+
metadata.fields.push(Vm_1.VmNamedDynamicVariable.from(name, type, value));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
if (schema.fields.some(f => f.name.data === name)) {
|
|
17
|
+
throw Error(`Metadata field '${name}' is mandatory`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else if (type === Vm_1.VmType.Int32 && typeof value === "number") {
|
|
22
|
+
metadata.fields.push(Vm_1.VmNamedDynamicVariable.from(name, type, value));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw Error(`Unsupported standard metadata field type '${type}'/'${typeof value}' `);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.pushStandardMetadataField = pushStandardMetadataField;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Bytes32 } from '../../../Bytes32';
|
|
2
2
|
import { IntX } from '../../../IntX';
|
|
3
3
|
import { TokenInfo } from '../TokenInfo';
|
|
4
|
+
import { TokenSchemas } from '../TokenSchemas';
|
|
4
5
|
export declare class TokenInfoBuilder {
|
|
5
|
-
static build(symbol: string, maxSupply: IntX, isNFT: boolean, decimals: number, creatorPublicKey: Bytes32, metadata?: Uint8Array, tokenSchemas?:
|
|
6
|
+
static build(symbol: string, maxSupply: IntX, isNFT: boolean, decimals: number, creatorPublicKey: Bytes32, metadata?: Uint8Array | null | undefined, tokenSchemas?: TokenSchemas | null | undefined): TokenInfo;
|
|
6
7
|
static maxSymbolLength: number;
|
|
7
8
|
/**
|
|
8
9
|
* Mirrors carbon::CheckIsValidSymbol from contracts/token.cpp.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenInfoBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenInfoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenInfoBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenInfoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,EACf,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,OAAO,EACzB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACxC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAC7C,SAAS;IAwCZ,MAAM,CAAC,eAAe,EAAE,MAAM,CAAO;IACrC;;;MAGE;IACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;CAkBjF"}
|
|
@@ -28,8 +28,16 @@ class TokenInfoBuilder {
|
|
|
28
28
|
tokenInfo.decimals = decimals;
|
|
29
29
|
tokenInfo.owner = creatorPublicKey;
|
|
30
30
|
tokenInfo.symbol = new SmallString_1.SmallString(symbol);
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
if (isNFT) {
|
|
32
|
+
if (!metadata) {
|
|
33
|
+
throw new Error('metadata is required for NFTs');
|
|
34
|
+
}
|
|
35
|
+
tokenInfo.metadata = metadata;
|
|
36
|
+
if (!tokenSchemas) {
|
|
37
|
+
throw new Error('tokenSchemas is required for NFTs');
|
|
38
|
+
}
|
|
39
|
+
tokenInfo.tokenSchemas = TokenSchemasBuilder_1.TokenSchemasBuilder.serialize(tokenSchemas);
|
|
40
|
+
}
|
|
33
41
|
return tokenInfo;
|
|
34
42
|
}
|
|
35
43
|
/**
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export declare class TokenMetadataBuilder {
|
|
2
|
-
static
|
|
2
|
+
private static readonly iconDataUriPrefixPattern;
|
|
3
|
+
private static readonly base64PayloadPattern;
|
|
4
|
+
static buildAndSerialize(fields?: Record<string, unknown>): Uint8Array;
|
|
5
|
+
private static validateIcon;
|
|
3
6
|
}
|
|
4
7
|
//# sourceMappingURL=TokenMetadataBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenMetadataBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenMetadataBuilder.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"TokenMetadataBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenMetadataBuilder.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CACF;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IAExE,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAkCtE,OAAO,CAAC,MAAM,CAAC,YAAY;CAiC5B"}
|
|
@@ -9,10 +9,14 @@ class TokenMetadataBuilder {
|
|
|
9
9
|
if (!fields || Object.keys(fields).length < requiredFields.length) {
|
|
10
10
|
throw new Error('Token metadata is mandatory');
|
|
11
11
|
}
|
|
12
|
+
if (Object.values(fields).some(v => typeof v !== 'string')) {
|
|
13
|
+
throw new Error('All metadata fields must be strings');
|
|
14
|
+
}
|
|
12
15
|
const missing = requiredFields.filter(field => typeof fields[field] !== 'string' || fields[field].trim() === '');
|
|
13
16
|
if (missing.length > 0) {
|
|
14
17
|
throw new Error(`Token metadata is missing required fields: ${missing.join(', ')}`);
|
|
15
18
|
}
|
|
19
|
+
this.validateIcon(fields['icon']);
|
|
16
20
|
const metadataFields = [];
|
|
17
21
|
for (const [key, value] of Object.entries(fields)) {
|
|
18
22
|
metadataFields.push(Vm_1.VmNamedDynamicVariable.from(key, Vm_1.VmType.String, value));
|
|
@@ -23,5 +27,37 @@ class TokenMetadataBuilder {
|
|
|
23
27
|
struct.write(wMetadata);
|
|
24
28
|
return wMetadata.toUint8Array();
|
|
25
29
|
}
|
|
30
|
+
static validateIcon(icon) {
|
|
31
|
+
const candidate = icon?.trim();
|
|
32
|
+
if (!candidate || candidate.length === 0) {
|
|
33
|
+
throw new Error('Token metadata icon must be a base64-encoded data URI (PNG, JPEG, or SVG)');
|
|
34
|
+
}
|
|
35
|
+
if (!this.iconDataUriPrefixPattern.test(candidate)) {
|
|
36
|
+
throw new Error('Token metadata icon must be a base64-encoded data URI (PNG, JPEG, or SVG)');
|
|
37
|
+
}
|
|
38
|
+
const payload = candidate.slice(candidate.indexOf(',') + 1).trim();
|
|
39
|
+
if (!payload) {
|
|
40
|
+
throw new Error('Token metadata icon must include a non-empty base64 payload');
|
|
41
|
+
}
|
|
42
|
+
if (!this.base64PayloadPattern.test(payload) || payload.length % 4 !== 0) {
|
|
43
|
+
throw new Error('Token metadata icon payload is not valid base64');
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const decoded = Buffer.from(payload, 'base64');
|
|
47
|
+
if (decoded.length === 0) {
|
|
48
|
+
throw new Error('Token metadata icon must include a non-empty base64 payload');
|
|
49
|
+
}
|
|
50
|
+
const normalizedPayload = decoded.toString('base64').replace(/=+$/, '');
|
|
51
|
+
const normalizedInput = payload.replace(/=+$/, '');
|
|
52
|
+
if (normalizedPayload !== normalizedInput) {
|
|
53
|
+
throw new Error('Token metadata icon payload is not valid base64');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
throw new Error('Token metadata icon payload is not valid base64');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
26
60
|
}
|
|
27
61
|
exports.TokenMetadataBuilder = TokenMetadataBuilder;
|
|
62
|
+
TokenMetadataBuilder.iconDataUriPrefixPattern = /^data:image\/(png|jpeg|svg\+xml);base64,/i;
|
|
63
|
+
TokenMetadataBuilder.base64PayloadPattern = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
@@ -1,7 +1,34 @@
|
|
|
1
|
+
import { VmStructSchema } from '../../Vm/VmStructSchema';
|
|
2
|
+
import { VmType } from '../../Vm/VmType';
|
|
1
3
|
import { TokenSchemas } from '../TokenSchemas';
|
|
4
|
+
export declare class TokenSchemasJson {
|
|
5
|
+
seriesMetadata: FieldType[];
|
|
6
|
+
rom: FieldType[];
|
|
7
|
+
ram: FieldType[];
|
|
8
|
+
}
|
|
9
|
+
export declare function parseTokenSchemasJson(json: string): TokenSchemasJson;
|
|
10
|
+
export declare class FieldType {
|
|
11
|
+
name: string;
|
|
12
|
+
type: VmType;
|
|
13
|
+
}
|
|
2
14
|
export declare class TokenSchemasBuilder {
|
|
3
|
-
static
|
|
4
|
-
static
|
|
5
|
-
static
|
|
15
|
+
static seriesDefaultMetadataFields: readonly FieldType[];
|
|
16
|
+
static nftDefaultMetadataFields: readonly FieldType[];
|
|
17
|
+
static standardMetadataFields: readonly FieldType[];
|
|
18
|
+
private static assertMetadataField;
|
|
19
|
+
private static defaultSeriesSchema;
|
|
20
|
+
private static defaultNftRomSchema;
|
|
21
|
+
private static seriesSchemaFromFieldTypes;
|
|
22
|
+
private static nftRomSchemaFromFieldTypes;
|
|
23
|
+
private static nftRamSchemaFromFieldTypes;
|
|
24
|
+
static prepareStandard(sharedMetadata: boolean): TokenSchemas;
|
|
25
|
+
static fromJson(json: string): TokenSchemas;
|
|
26
|
+
static verify(schemas: TokenSchemas): Readonly<{
|
|
27
|
+
ok: boolean;
|
|
28
|
+
error: string | null;
|
|
29
|
+
}>;
|
|
30
|
+
static serialize(tokenSchemas: TokenSchemas): Readonly<Uint8Array>;
|
|
31
|
+
static serializeHex(tokenSchemas: TokenSchemas): Readonly<string>;
|
|
32
|
+
static logSchema(schema: VmStructSchema): void;
|
|
6
33
|
}
|
|
7
34
|
//# sourceMappingURL=TokenSchemasBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSchemasBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenSchemasBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenSchemasBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenSchemasBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAoB,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,gBAAgB;IAC3B,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAkBpE;AAED,qBAAa,SAAS;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,mBAAmB;IAC9B,OAAc,2BAA2B,EAAE,SAAS,SAAS,EAAE,CAIpD;IAEX,OAAc,wBAAwB,EAAE,SAAS,SAAS,EAAE,CAGjD;IAEX,OAAc,sBAAsB,EAAE,SAAS,SAAS,EAAE,CAM/C;IAEX,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0BlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoBlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqBlC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAkBzC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAkBzC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAiBzC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,GAAG,YAAY;IAe7D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAgB3C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAmBrF,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC;IAOlE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;IAIjE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc;CAGxC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TokenSchemasBuilder = void 0;
|
|
3
|
+
exports.TokenSchemasBuilder = exports.FieldType = exports.parseTokenSchemasJson = exports.TokenSchemasJson = void 0;
|
|
4
4
|
const utils_1 = require("../../../../../utils");
|
|
5
5
|
const CarbonSerialization_1 = require("../../../../CarbonSerialization");
|
|
6
6
|
const VmNamedVariableSchema_1 = require("../../Vm/VmNamedVariableSchema");
|
|
@@ -8,45 +8,200 @@ const VmStructSchema_1 = require("../../Vm/VmStructSchema");
|
|
|
8
8
|
const VmType_1 = require("../../Vm/VmType");
|
|
9
9
|
const StandardMeta_1 = require("../StandardMeta");
|
|
10
10
|
const TokenSchemas_1 = require("../TokenSchemas");
|
|
11
|
+
class TokenSchemasJson {
|
|
12
|
+
}
|
|
13
|
+
exports.TokenSchemasJson = TokenSchemasJson;
|
|
14
|
+
function parseTokenSchemasJson(json) {
|
|
15
|
+
const raw = JSON.parse(json);
|
|
16
|
+
const pickArray = (k) => {
|
|
17
|
+
const arr = raw[k];
|
|
18
|
+
if (!Array.isArray(arr))
|
|
19
|
+
throw new Error(`${k} must be an array`);
|
|
20
|
+
return arr.map((it) => {
|
|
21
|
+
if (typeof it?.name !== 'string')
|
|
22
|
+
throw new Error(`${k} field name must be string`);
|
|
23
|
+
if (typeof it?.type !== 'string')
|
|
24
|
+
throw new Error(`${k} field type must be string`);
|
|
25
|
+
return { name: it.name, type: (0, VmType_1.vmTypeFromString)(it.type) };
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
seriesMetadata: pickArray('seriesMetadata'),
|
|
30
|
+
rom: pickArray('rom'),
|
|
31
|
+
ram: pickArray('ram'),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
exports.parseTokenSchemasJson = parseTokenSchemasJson;
|
|
35
|
+
class FieldType {
|
|
36
|
+
}
|
|
37
|
+
exports.FieldType = FieldType;
|
|
11
38
|
class TokenSchemasBuilder {
|
|
12
|
-
static
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
39
|
+
static assertMetadataField(schemas, fieldTypes) {
|
|
40
|
+
fieldTypes.forEach(fieldType => {
|
|
41
|
+
let fieldIsFound = false;
|
|
42
|
+
schemas.forEach(schema => {
|
|
43
|
+
const found = schema.fields.find(x => x.name.data === fieldType.name);
|
|
44
|
+
if (found != undefined) {
|
|
45
|
+
if (found.schema.type != fieldType.type) {
|
|
46
|
+
return { ok: false, error: `Type mismatch for ${fieldType.name} field, must be ${found.schema.type} instead of ${fieldType}` };
|
|
47
|
+
}
|
|
48
|
+
fieldIsFound = true;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const found2 = schema.fields.find(x => x.name.data.toLowerCase() === fieldType.name.toLowerCase());
|
|
52
|
+
if (found2 != undefined) {
|
|
53
|
+
return { ok: false, error: `Case mismatch for ${fieldType.name} field, must be ${found2.name}` };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
if (!fieldIsFound) {
|
|
58
|
+
return { ok: false, error: `Mandatory metadata field not found: ${fieldType.name}` };
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return { ok: true, error: null };
|
|
62
|
+
}
|
|
63
|
+
static defaultSeriesSchema(sharedMetadata) {
|
|
64
|
+
// Series metadata schema
|
|
65
|
+
const schema = new VmStructSchema_1.VmStructSchema();
|
|
66
|
+
schema.fields = [];
|
|
16
67
|
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
68
|
+
// Default fields
|
|
69
|
+
this.seriesDefaultMetadataFields.forEach(f => {
|
|
70
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
71
|
+
});
|
|
72
|
+
if (sharedMetadata) {
|
|
73
|
+
this.standardMetadataFields.forEach(f => {
|
|
74
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
75
|
+
});
|
|
76
|
+
}
|
|
20
77
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
78
|
+
return schema;
|
|
79
|
+
}
|
|
80
|
+
static defaultNftRomSchema(sharedMetadata) {
|
|
81
|
+
// NFT ROM schema
|
|
82
|
+
const schema = new VmStructSchema_1.VmStructSchema();
|
|
83
|
+
schema.fields = [];
|
|
84
|
+
{
|
|
85
|
+
// Default fields
|
|
86
|
+
this.nftDefaultMetadataFields.forEach(f => {
|
|
87
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
88
|
+
});
|
|
89
|
+
if (!sharedMetadata) {
|
|
90
|
+
// They are default for all NFTs
|
|
91
|
+
this.standardMetadataFields.forEach(f => {
|
|
92
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return schema;
|
|
97
|
+
}
|
|
98
|
+
static seriesSchemaFromFieldTypes(fieldTypes) {
|
|
99
|
+
// Series metadata schema
|
|
100
|
+
const schema = new VmStructSchema_1.VmStructSchema();
|
|
101
|
+
schema.fields = [];
|
|
24
102
|
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
103
|
+
// Default fields. Adding them always
|
|
104
|
+
this.seriesDefaultMetadataFields.forEach(f => {
|
|
105
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
106
|
+
});
|
|
107
|
+
fieldTypes.forEach(f => {
|
|
108
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return schema;
|
|
112
|
+
}
|
|
113
|
+
static nftRomSchemaFromFieldTypes(fieldTypes) {
|
|
114
|
+
// NFT ROM schema
|
|
115
|
+
const schema = new VmStructSchema_1.VmStructSchema();
|
|
116
|
+
schema.fields = [];
|
|
117
|
+
{
|
|
118
|
+
// Default fields. Adding them always
|
|
119
|
+
this.nftDefaultMetadataFields.forEach(f => {
|
|
120
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
121
|
+
});
|
|
122
|
+
fieldTypes.forEach(f => {
|
|
123
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return schema;
|
|
127
|
+
}
|
|
128
|
+
static nftRamSchemaFromFieldTypes(fieldTypes) {
|
|
129
|
+
if (fieldTypes.length == 0) {
|
|
130
|
+
return new VmStructSchema_1.VmStructSchema([], VmStructSchema_1.VmStructSchema.Flags.DynamicExtras);
|
|
32
131
|
}
|
|
132
|
+
// RAM schema
|
|
133
|
+
const schema = new VmStructSchema_1.VmStructSchema();
|
|
134
|
+
schema.fields = [];
|
|
135
|
+
{
|
|
136
|
+
fieldTypes.forEach(f => {
|
|
137
|
+
schema.fields.push(new VmNamedVariableSchema_1.VmNamedVariableSchema(f.name, f.type));
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return schema;
|
|
141
|
+
}
|
|
142
|
+
static prepareStandard(sharedMetadata) {
|
|
143
|
+
const tokenSchemas = new TokenSchemas_1.TokenSchemas();
|
|
144
|
+
// Token's series metadata schema
|
|
145
|
+
tokenSchemas.seriesMetadata = this.defaultSeriesSchema(sharedMetadata);
|
|
146
|
+
// NFT's ROM schema
|
|
147
|
+
tokenSchemas.rom = this.defaultNftRomSchema(sharedMetadata);
|
|
33
148
|
// NFT's RAM schema
|
|
34
|
-
|
|
149
|
+
tokenSchemas.ram = new VmStructSchema_1.VmStructSchema([], VmStructSchema_1.VmStructSchema.Flags.DynamicExtras);
|
|
150
|
+
return tokenSchemas;
|
|
151
|
+
}
|
|
152
|
+
static fromJson(json) {
|
|
153
|
+
const tokenSchemasJson = parseTokenSchemasJson(json);
|
|
35
154
|
const tokenSchemas = new TokenSchemas_1.TokenSchemas();
|
|
36
|
-
tokenSchemas.seriesMetadata =
|
|
37
|
-
tokenSchemas.rom =
|
|
38
|
-
tokenSchemas.ram =
|
|
155
|
+
tokenSchemas.seriesMetadata = this.seriesSchemaFromFieldTypes(tokenSchemasJson.seriesMetadata);
|
|
156
|
+
tokenSchemas.rom = this.nftRomSchemaFromFieldTypes(tokenSchemasJson.rom);
|
|
157
|
+
tokenSchemas.ram = this.nftRamSchemaFromFieldTypes(tokenSchemasJson.ram);
|
|
158
|
+
const { ok, error } = this.verify(tokenSchemas);
|
|
159
|
+
if (!ok) {
|
|
160
|
+
throw Error(error ?? "Unknown error");
|
|
161
|
+
}
|
|
39
162
|
return tokenSchemas;
|
|
40
163
|
}
|
|
41
|
-
static
|
|
42
|
-
|
|
164
|
+
static verify(schemas) {
|
|
165
|
+
let result = this.assertMetadataField([schemas.seriesMetadata, schemas.rom], this.standardMetadataFields);
|
|
166
|
+
if (!result.ok) {
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
result = this.assertMetadataField([schemas.seriesMetadata], this.seriesDefaultMetadataFields);
|
|
170
|
+
if (!result.ok) {
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
result = this.assertMetadataField([schemas.rom], this.nftDefaultMetadataFields);
|
|
174
|
+
if (!result.ok) {
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
return { ok: true, error: null };
|
|
178
|
+
}
|
|
179
|
+
static serialize(tokenSchemas) {
|
|
43
180
|
const schemaBuf = new CarbonSerialization_1.CarbonBinaryWriter();
|
|
44
181
|
tokenSchemas.write(schemaBuf);
|
|
45
182
|
return schemaBuf.toUint8Array();
|
|
46
183
|
}
|
|
47
|
-
static
|
|
48
|
-
|
|
49
|
-
|
|
184
|
+
static serializeHex(tokenSchemas) {
|
|
185
|
+
return (0, utils_1.bytesToHex)(this.serialize(tokenSchemas));
|
|
186
|
+
}
|
|
187
|
+
static logSchema(schema) {
|
|
188
|
+
schema.fields.forEach(f => console.log("Schema field: ", f.name.data));
|
|
50
189
|
}
|
|
51
190
|
}
|
|
52
191
|
exports.TokenSchemasBuilder = TokenSchemasBuilder;
|
|
192
|
+
TokenSchemasBuilder.seriesDefaultMetadataFields = [
|
|
193
|
+
{ name: StandardMeta_1.StandardMeta.id.data, type: VmType_1.VmType.Int256 },
|
|
194
|
+
{ name: 'mode', type: VmType_1.VmType.Int8 },
|
|
195
|
+
{ name: 'rom', type: VmType_1.VmType.Bytes }
|
|
196
|
+
];
|
|
197
|
+
TokenSchemasBuilder.nftDefaultMetadataFields = [
|
|
198
|
+
{ name: StandardMeta_1.StandardMeta.id.data, type: VmType_1.VmType.Int256 },
|
|
199
|
+
{ name: 'rom', type: VmType_1.VmType.Bytes }
|
|
200
|
+
];
|
|
201
|
+
TokenSchemasBuilder.standardMetadataFields = [
|
|
202
|
+
{ name: 'name', type: VmType_1.VmType.String },
|
|
203
|
+
{ name: 'description', type: VmType_1.VmType.String },
|
|
204
|
+
{ name: 'imageURL', type: VmType_1.VmType.String },
|
|
205
|
+
{ name: 'infoURL', type: VmType_1.VmType.String },
|
|
206
|
+
{ name: 'royalties', type: VmType_1.VmType.Int32 }
|
|
207
|
+
];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VmStructSchema } from '../../Vm';
|
|
2
2
|
export declare class TokenSeriesMetadataBuilder {
|
|
3
|
-
static buildAndSerialize(newPhantasmaSeriesId: bigint,
|
|
3
|
+
static buildAndSerialize(seriesMetadataSchema: VmStructSchema, newPhantasmaSeriesId: bigint, sharedName?: string, sharedDescription?: string, sharedImageURL?: string, sharedInfoURL?: string, sharedRoyalties?: number, sharedRom?: Uint8Array): Uint8Array;
|
|
4
4
|
}
|
|
5
5
|
//# sourceMappingURL=TokenSeriesMetadataBuilder.d.ts.map
|
package/dist/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSeriesMetadataBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenSeriesMetadataBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/types/Carbon/Blockchain/Modules/Builders/TokenSeriesMetadataBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,cAAc,EAAU,MAAM,UAAU,CAAC;AAK3F,qBAAa,0BAA0B;IACrC,MAAM,CAAC,iBAAiB,CACtB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,UAAU,GACrB,UAAU;CAuBd"}
|
|
@@ -4,18 +4,22 @@ exports.TokenSeriesMetadataBuilder = void 0;
|
|
|
4
4
|
const CarbonSerialization_1 = require("../../../../CarbonSerialization");
|
|
5
5
|
const Vm_1 = require("../../Vm");
|
|
6
6
|
const StandardMeta_1 = require("../StandardMeta");
|
|
7
|
-
const
|
|
7
|
+
const StandardMetadataHelper_1 = require("./StandardMetadataHelper");
|
|
8
8
|
class TokenSeriesMetadataBuilder {
|
|
9
|
-
static buildAndSerialize(newPhantasmaSeriesId,
|
|
10
|
-
tokenSchemas = tokenSchemas || TokenSchemasBuilder_1.TokenSchemasBuilder.prepareStandardTokenSchemas();
|
|
9
|
+
static buildAndSerialize(seriesMetadataSchema, newPhantasmaSeriesId, sharedName, sharedDescription, sharedImageURL, sharedInfoURL, sharedRoyalties, sharedRom) {
|
|
11
10
|
const wMetadata = new CarbonSerialization_1.CarbonBinaryWriter();
|
|
12
|
-
let
|
|
13
|
-
|
|
11
|
+
let seriesMetadata = new Vm_1.VmDynamicStruct();
|
|
12
|
+
seriesMetadata.fields = [
|
|
14
13
|
Vm_1.VmNamedDynamicVariable.from(StandardMeta_1.StandardMeta.id, Vm_1.VmType.Int256, newPhantasmaSeriesId),
|
|
15
|
-
Vm_1.VmNamedDynamicVariable.from('mode', Vm_1.VmType.Int8, sharedRom.length == 0 ? 0 : 1),
|
|
16
|
-
Vm_1.VmNamedDynamicVariable.from('rom', Vm_1.VmType.Bytes, sharedRom)
|
|
14
|
+
Vm_1.VmNamedDynamicVariable.from('mode', Vm_1.VmType.Int8, sharedRom == null || sharedRom.length == 0 ? 0 : 1),
|
|
15
|
+
Vm_1.VmNamedDynamicVariable.from('rom', Vm_1.VmType.Bytes, sharedRom ? sharedRom : [])
|
|
17
16
|
];
|
|
18
|
-
|
|
17
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(seriesMetadata, seriesMetadataSchema, 'name', Vm_1.VmType.String, sharedName);
|
|
18
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(seriesMetadata, seriesMetadataSchema, 'description', Vm_1.VmType.String, sharedDescription);
|
|
19
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(seriesMetadata, seriesMetadataSchema, 'imageURL', Vm_1.VmType.String, sharedImageURL);
|
|
20
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(seriesMetadata, seriesMetadataSchema, 'infoURL', Vm_1.VmType.String, sharedInfoURL);
|
|
21
|
+
(0, StandardMetadataHelper_1.pushStandardMetadataField)(seriesMetadata, seriesMetadataSchema, 'royalties', Vm_1.VmType.Int32, sharedRoyalties);
|
|
22
|
+
seriesMetadata.writeWithSchema(seriesMetadataSchema, wMetadata);
|
|
19
23
|
return wMetadata.toUint8Array();
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VmType.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/Carbon/Blockchain/Vm/VmType.ts"],"names":[],"mappings":"AAAA,0BAAkB,MAAM;IACtB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,KAAK,IAAS;IACd,MAAM,IAAS;IACf,IAAI,IAAS;IACb,KAAK,IAAS;IACd,KAAK,KAAS;IACd,KAAK,KAAS;IACd,MAAM,KAAS;IACf,OAAO,KAAS;IAChB,OAAO,KAAS;IAChB,OAAO,KAAU;IACjB,MAAM,KAAU;IAEhB,aAAa,IAAkB;IAC/B,WAAW,IAAgB;IAC3B,YAAY,IAAiB;IAC7B,UAAU,IAAe;IACzB,WAAW,IAAgB;IAC3B,WAAW,KAAgB;IAC3B,WAAW,KAAgB;IAC3B,YAAY,KAAiB;IAC7B,aAAa,KAAkB;IAC/B,aAAa,KAAkB;IAC/B,aAAa,KAAkB;IAC/B,YAAY,KAAiB;CAC9B"}
|
|
1
|
+
{"version":3,"file":"VmType.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/Carbon/Blockchain/Vm/VmType.ts"],"names":[],"mappings":"AAAA,0BAAkB,MAAM;IACtB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,KAAK,IAAS;IACd,MAAM,IAAS;IACf,IAAI,IAAS;IACb,KAAK,IAAS;IACd,KAAK,KAAS;IACd,KAAK,KAAS;IACd,MAAM,KAAS;IACf,OAAO,KAAS;IAChB,OAAO,KAAS;IAChB,OAAO,KAAU;IACjB,MAAM,KAAU;IAEhB,aAAa,IAAkB;IAC/B,WAAW,IAAgB;IAC3B,YAAY,IAAiB;IAC7B,UAAU,IAAe;IACzB,WAAW,IAAgB;IAC3B,WAAW,KAAgB;IAC3B,WAAW,KAAgB;IAC3B,YAAY,KAAiB;IAC7B,aAAa,KAAkB;IAC/B,aAAa,KAAkB;IAC/B,aAAa,KAAkB;IAC/B,YAAY,KAAiB;CAC9B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoCrD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VmType = void 0;
|
|
3
|
+
exports.vmTypeFromString = exports.VmType = void 0;
|
|
4
4
|
var VmType;
|
|
5
5
|
(function (VmType) {
|
|
6
6
|
VmType[VmType["Dynamic"] = 0] = "Dynamic";
|
|
@@ -29,3 +29,38 @@ var VmType;
|
|
|
29
29
|
VmType[VmType["Array_Bytes64"] = 21] = "Array_Bytes64";
|
|
30
30
|
VmType[VmType["Array_String"] = 23] = "Array_String";
|
|
31
31
|
})(VmType = exports.VmType || (exports.VmType = {}));
|
|
32
|
+
function vmTypeFromString(type) {
|
|
33
|
+
const map = {
|
|
34
|
+
Dynamic: VmType.Dynamic,
|
|
35
|
+
Array: VmType.Array,
|
|
36
|
+
Bytes: VmType.Bytes,
|
|
37
|
+
Struct: VmType.Struct,
|
|
38
|
+
Int8: VmType.Int8,
|
|
39
|
+
Int16: VmType.Int16,
|
|
40
|
+
Int32: VmType.Int32,
|
|
41
|
+
Int64: VmType.Int64,
|
|
42
|
+
Int256: VmType.Int256,
|
|
43
|
+
Bytes16: VmType.Bytes16,
|
|
44
|
+
Bytes32: VmType.Bytes32,
|
|
45
|
+
Bytes64: VmType.Bytes64,
|
|
46
|
+
String: VmType.String,
|
|
47
|
+
Array_Dynamic: VmType.Array_Dynamic,
|
|
48
|
+
Array_Bytes: VmType.Array_Bytes,
|
|
49
|
+
Array_Struct: VmType.Array_Struct,
|
|
50
|
+
Array_Int8: VmType.Array_Int8,
|
|
51
|
+
Array_Int16: VmType.Array_Int16,
|
|
52
|
+
Array_Int32: VmType.Array_Int32,
|
|
53
|
+
Array_Int64: VmType.Array_Int64,
|
|
54
|
+
Array_Int256: VmType.Array_Int256,
|
|
55
|
+
Array_Bytes16: VmType.Array_Bytes16,
|
|
56
|
+
Array_Bytes32: VmType.Array_Bytes32,
|
|
57
|
+
Array_Bytes64: VmType.Array_Bytes64,
|
|
58
|
+
Array_String: VmType.Array_String,
|
|
59
|
+
};
|
|
60
|
+
const value = map[type.trim()];
|
|
61
|
+
if (value === undefined) {
|
|
62
|
+
throw new Error(`Unknown VmType: ${type}`);
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
exports.vmTypeFromString = vmTypeFromString;
|